libxml++ is a C++ wrapper for the libxml XML parser library. It has SAX and
DOM-like APIs, but does not attempt to conform exactly to the DOM
specifications because they are not aimed at C++. Its API is much simpler
than the underlying libxml C API.
This package follows the libxml++-5.0 API.
Changes compared to libxml++:
5.0.1 (stable):
Build:
* libxml++config.h.*: Don't dllimport on MinGW
(Chun-wei Fan) Issue gtkmm#90 (Lukas K.)
* Meson build: Make it possible to use libxml++ as a subproject
(Kjell Ahlstedt)
* Meson build: No implicit_include_directories
(Kjell Ahlstedt)
* MSVC build: Export classes selectively
(Chun-wei Fan)
Documentation:
* docs/index.md: Describe the different libxml++ ABIs
(Kjell Ahlstedt) Issue #20 (Tom Schoonjans)
5.0.0 (stable):
This is the first stable release in the libxml++-5.0 ABI series.
It is parallel-installable with the libxml++-2.6, libxml++-3.0
and libxml++-4.0 ABIs.
The tarball for 5.0.0 has been created with 'meson dist'.
If you build with Autotools from the tarball, please read
the relevant part of the README file.
Build:
* Add NMake Makefiles
Remove Visual Studio 2010 projects
(Chun-wei Fan) Pull request #10
* Use __declspec(dllexport) when building on Visual Studio
Stop using gendef.exe
(Chun-wei Fan) Pull request #15
* Add support for building with Meson
(Kjell Ahlstedt, Chun-wei Fan) Pull request #16, #17, issue #19
4.9.1 (unstable):
* Change ABI name from libxml++-4.0 to libxml++-5.0
There is also a libxml++-4-0 branch for the libxml++-4.0 ABI,
which still uses glibmm-2.64.
And there is a libxml++-3-0 branch for the libxml++-3.0 ABI,
which still uses glibmm-2.4.
* Build: Remove dependency on glibmm and don't use Glib::ustring
For now, the API uses an xmlpp::ustring alias of std::string
where it previously used Glib::ustring.
3.9.1 (unstable):
* Change ABI name to libxml++-4.0
There is also a libxml++-3-2 branch for the libxml++-3.0 ABI,
which still uses glibmm-2.4.
* Build:
- Use glibmm-2.64 instead of glibmm-2.4.
- Require C++17.
* Parser: Make some methods const
3.2.0 (stable):
* Document, DomParser: Improve XInclude processing:
Document:
Add process_xinclude() overload that takes a fixup_base_uris parameter.
DomParser:
Add set/get_xinclude_options() and add optional XInclude processing to the
parse methods.
(Kjell Ahlstedt) Bug 781566
* Add explicit keyword to some single-parameter constructors.
(Murray Cumming)
* tests: Don't require C++17
(Kjell Ahlstedt)
* Build: Fix srcdir != buildir build.
(Kjell Ahlstedt, Murray Cumming)
3.0.1 (stable):
* Element::remove_attribute(): Delete the C++ wrapper
(Harald Schmalzl, Kjell Ahlstedt) Bug #768404.
3.0.0 (stable):
* This is the first stable release of libxml++-3.0. ABI and API are
incompatible with libxml++-2.6. These two series of libxml++ can be
installed in parallel.
Applications that want to upgrade from libxml++-2.6 to libxml++-3.0
must change their pkg-config check to libxml++-3.0.
(Kjell Ahlstedt) Bug #754673.
* This release is identical to the unstable 2.91.3, except for the so name,
which has now been bumped.
(Kjell Ahlstedt) Bug #760574 (Dominique Leuenberger)
2.91.3 (unstable):
* Element: Remove a redundant nullptr check
(Renu Tyagi) Bug #757515
* Use scoped enums (enum class) instead of unscoped enums
* Document: Test for nullptr in a constructor
* DomParser: Make operator bool() explicit
(Kjell Ahlstedt)
* The ABI and API are not identical to libxml++ 2.91.2.
There may be more changes in ABI and/or API before the first stable
libxml++-3.0 release.
2.91.2 (unstable):
* Remove the preprocessor constant LIBXMLCPP_EXCEPTIONS_ENABLED.
It was always 1.
* Add a config-time test for support of std::exception_ptr. Don't try to
use std::exception_ptr on a system where it does not exist.
This includes re-implementing the wrapped_exception class and the
raise() and clone() methods in xmlpp::exception and its subclasses.
(Daniel Trebbien, Kjell Ahlstedt) Bug #757042 (Michael Biebl)
* The ABI is not identical to that of libxml++ 2.91.1.
There may be more changes in ABI and/or API before the first stable
libxml++-3.0 release.
2.91.1 (unstable):
* Renamed ABI from libxml++-2.6 to libxml++-3.0.
This requires applications to change their pkg-config check to libxml++-3.0
when they wish to use libxml++ 2.9x or 3.x instead of libxml++ 2.x.
(Kjell Ahlstedt) Bug #754673.
There may be more changes in ABI and/or API before the first stable
libxml++-3.0 release.
* Node: Add const_NodeList and use it in a const version of get_children().
Add const_NodeSet and use it in a const version of find().
Replace xmlpp::NodeSet by xmlpp::Node::NodeSet.
Element: Add const_Attribute_list and use it in a const version of
get_attributes().
(Kjell Ahlstedt) Bug #338907 (Marcos Mayorga)
* Document: Add a non-const version of get_root_node(). Let the const version
return a const pointer.
(Knut Aksel Røysland) Bug #632522
* Element: Add a non-const version of get_attribute(). Let the const version
return a const pointer.
(Knut Aksel Røysland) Bug #632524
* Replace the deprecated std::auto_ptr by std::unique_ptr
(Kjell Ahlstedt) Bug #753123
* DomParser: The default behaviour is to throw both parse errors and
validity errors in an exception instead of printing some messages on stderr.
* Parser: Some protected data has become private.
* Several classes: Some virtual methods have become non-virtual, and some
non-virtual methods have become virtual.
* Remove class xmlpp::wrapped_exception and the deprecated classes
Schema and SchemaValidator.
* xmlpp::exception and its subclasses: Remove Raise() and Clone().
* SaxParser: Start each parsing with a new Document for entity resolution.
* Move all Node::add_child*() methods to Element and rename them to
add_child_element*().
* Attribute: Move set_value() to AttributeNode.
* Use std::string instead of Glib::ustring for filenames.
* Node: Replace remove_child() by remove_node().
* Move some code from DtdValidator to Dtd.
* Element: Rename set/get_child_text() to set/get_first_child_text().