3 * Renamed ABI from libxml++-2.6 to libxml++-3.0.
4 This requires applications to change their pkg-config check to libxml++-3.0
5 when they wish to use libxml++ 2.9x or 3.x instead of libxml++ 2.x.
6 (Kjell Ahlstedt) Bug #754673.
7 There may be more changes in ABI and/or API before the first stable
10 * Node: Add const_NodeList and use it in a const version of get_children().
11 Add const_NodeSet and use it in a const version of find().
12 Replace xmlpp::NodeSet by xmlpp::Node::NodeSet.
13 Element: Add const_Attribute_list and use it in a const version of
15 (Kjell Ahlstedt) Bug #338907 (Marcos Mayorga)
16 * Document: Add a non-const version of get_root_node(). Let the const version
17 return a const pointer.
18 (Knut Aksel Røysland) Bug #632522
19 * Element: Add a non-const version of get_attribute(). Let the const version
20 return a const pointer.
21 (Knut Aksel Røysland) Bug #632524
22 * Replace the deprecated std::auto_ptr by std::unique_ptr
23 (Kjell Ahlstedt) Bug #753123
24 * DomParser: The default behaviour is to throw both parse errors and
25 validity errors in an exception instead of printing some messages on stderr.
26 * Parser: Some protected data has become private.
27 * Several classes: Some virtual methods have become non-virtual, and some
28 non-virtual methods have become virtual.
29 * Remove class xmlpp::wrapped_exception and the deprecated classes
30 Schema and SchemaValidator.
31 * xmlpp::exception and its subclasses: Remove Raise() and Clone().
32 * SaxParser: Start each parsing with a new Document for entity resolution.
33 * Move all Node::add_child*() methods to Element and rename them to
35 * Attribute: Move set_value() to AttributeNode.
36 * Use std::string instead of Glib::ustring for filenames.
37 * Node: Replace remove_child() by remove_node().
38 * Move some code from DtdValidator to Dtd.
39 * Element: Rename set/get_child_text() to set/get_first_child_text().
44 * SaxParser: Fix “double free or corruption” if a std::exception is thrown
46 (Daniel Trebbien, Kjell Ahlstedt) Bug #753570
47 * Replace some (deprecated in C++11) std::auto_ptr by std::unique_ptr.
48 There are still some auto_ptrs in header files bug replacing them would
50 (Kjell Ahlstedt) Bug #753123.
54 * Use (and require) C++11.
59 * Fix the build with C++11 compilers, such as MS Visual C++ 2013 - Implicit
60 conversions from streams to bool are no longer allowed.)
61 (Mikhail Titov) Bug #748658
62 * Build: Disable deprecated API in dependencies if --enable-warnings=fatal
64 * Build: Require libxml2 2.7.7 or later
69 This stable version is identical to the unstable version 2.37.2.
71 API additions since 2.36:
73 * Add Node::add_child_with_new_ns().
74 (Kjell Ahlstedt) Bug #737682 (Mathias Lorente)
75 * Add XsdSchema and XsdValidator classes. Deprecate Schema and SchemaValidator.
76 Add RelaxNGSchema and RelaxNGValidator.
77 (Kjell Ahlstedt) Bug #737712 (Michel Stam)
78 Thanks to Tjalling Hattink, who made initial versions of the RelaxNG classes.
79 * Parser: Add input operator>>(std::istream& in, Parser& parser).
80 (Kjell Ahlstedt) Bug #329281 (Pierre Thierry)
81 * Parser: Add [set|get]_include_default_attributes() and
82 [set|get]_parser_options().
83 (Kjell Ahlstedt) Bug #701674 (Bob Nolty)
87 * Add version information to libxml++config.h.
89 * Document: Avoid possible null pointer dereference.
91 * Element::set_namespace_declaration(): Update the node's associated namespace.
92 Add dom_update_namespace example program.
93 (Mathias Lorente) Bug #737682
94 * Add Node::add_child_with_new_ns().
95 (Kjell Ahlstedt) Bug #737682 (Mathias Lorente)
96 * Schema: Don't use null pointers in get_name(), get_target_namespace()
99 * Add XsdSchema and XsdValidator. Deprecate Schema and SchemaValidator.
100 Add RelaxNGSchema and RelaxNGValidator.
101 (Kjell Ahlstedt) Bug #737712 (Michel Stam)
102 Thanks to Tjalling Hattink, who made initial versions of the RelaxNG classes.
103 * Parser: Add input operator>>(std::istream& in, Parser& parser).
104 (Kjell Ahlstedt) Bug #329281 (Pierre Thierry)
107 * Use doxygen-extra.css from the mm-common package.
108 Requires mm-common 0.9.7 when configured to use maintainer-mode.
112 * Avoid infinite loop with Doxygen 1.8.6.
117 * Parser: Add [set|get]_include_default_attributes().
118 (Kjell Ahlstedt) Bug #701674 (Bob Nolty)
119 * Improve some null-pointer checks
120 (Kjell Ahlstedt) Bug #705187 (Gaurav)
123 * Manual: Add XIncludeStart and XIncludeEnd to the node type tree.
125 * Update Doxyfile.in for doxygen 1.8.3.
129 * Fix examples/Makefile.am for new versions of automake.
130 (Kjell Ahlstedt) Bug #678390
131 * Examples dom_parse_entities and dom_parser: Fix when LC_ALL=C.
132 (Murray Cumming) Bug #702136 (Michael Biebl)
136 * Element::set_namespace_declaration():
137 It is not an error to set the same URI twice.
138 (Kjell Ahlstedt) Bug #635846, comment 27.
139 * Require libxml-2.0 >= 2.7.3.
141 * Parser::initialize_context(): Call xmlCtxtUseOptions().
147 - Add process_xinclude(), using new XIncludeStart
148 and XIncludeEnd classes, derived from Node.
149 (Kjell Ahlsted) Bug #338521.
150 - Make the Document(xmlDoc*) constructor public.
151 (Kjell Ahlsted) Bug #668980.
152 * Parser: Make it thread-safe.
153 (Kjell Ahlstedt) Bug #681467.
154 * Schema::set_document(): If the argument 'document' is 0 then
155 create an empty document, as the documentation says.
157 * Improve the error handling.
158 (Kjell Ahlstedt) Bug #635846.
160 - Add incremental parsing to the SaxParser example program.
161 - DtdValidation and SchemaValidation: Print all exception information.
162 - Improve error descriptions.
169 - Add eval_to_[boolean|number|string]() methods.
170 (Kjell Ahlstedt) Bug #316244
171 - Fix memory problems in import_node().
172 (Kjell Ahlstedt) Bug #672992
174 - The examples are now built and run during make check.
175 (Kjell Ahlstedt) Bug #678390
176 - Define LIBXMLCPP_EXCEPTIONS_ENABLED unconditionally.
181 * Node: Add get_first_child().
182 (Murray Cumming, Based on a patch by Ilya Murav'jov in bug #648125)
183 * Build: Remove the --disable-api-exceptions configure option.
188 * Handle attributes with default values correctly.
189 (Kjell Ahlstedt) Bug #669635.
190 * Improved handling of entity references and processing instructions.
191 (Kjell Ahlstedt) Bug #669481
192 * Parser: Throw more detailed error messages.
193 (Kjell Ahlstedt) Bug #304020 (Virgile Devaux)
194 * Document: Make the Document(xmlDoc*) constructor protected.
195 (Murray Cumming) Bug #668980 (A. Pignotti).
199 * Element: Add add_child_cdata(), like the existing add_child_text().
200 * Node::create_new_child_node(): Use the default namespace if none is specified.
201 (Mathias Lorente) Bug #656110
202 * Documentation: Fix a markup typo.
207 * Do not require mm-common during the tarball build.
212 Major changes since 2.32:
214 * Allow separate and multi-threaded libxml2 usage by
215 not using the global xmlRegisterNodeDefault() and xmlDeregisterNodeDefault()
217 (Alessandro Pignotti)
218 * Do not call xmlCleanupParser() when the library is unloaded,
219 because it is brutal and can break other parts of applications that try to
220 use libxml separately.
225 * Node::remove_child(): Fix a memory management problem introduced in
228 * Document::do_write_to_stream(), Schema::set_document(): Check the results from
229 xmlSchemaNewDocParserCtxt() and xmlSaveFormatFileTo().
230 (Murray Cumming) Bug #635846 (Markus Elfring)
234 * (Hopefully) allow separate and multi-threaded libxml2 usage by
235 not using the global xmlRegisterNodeDefault() and xmlDeregisterNodeDefault()
237 (Alessandro Pignotti)
238 * Do not call xmlCleanupParser() when the library is unloaded,
239 because it is brutal and can break other parts of applications that try to
240 use libxml separately.
242 * Minor code improvement.
243 (Knut Aksel Røysland)
244 * Build: Build the examples by default.
249 * Node::find(): Check xmlNode::type for a XML_NAMESPACE_DECL to prevent a
251 (Murray Cumming) Bug #386013 (Max Kirillov)
252 * Build: Added an MSVC .net 2010 and 64-bit Windows builds.
258 - Added main page doxygen text.
259 (David King, Murray Cumming)
261 (Murray Cumming) Bug #583412 (Hubert Figuiere).
262 - Correct some @newin tags.
267 * Build system rewrite.
268 * Use mm-common for reference documentation generation. Fixes GNOME bugs
269 #583411 (Hubert Figuiere), #614260 (David King) and #551501 (Johannes Schmid)
270 * Fix several compiler warnings.
271 * Use 0 instead of NULL. (Murray Cumming)
276 * Build without exceptions
280 * Increased version number to match GNOME 2.26.
284 * TextReader: Actually throw exceptions on errors.
285 (This breaks ABI but we do not believe that this class could be used with
286 this problem so it should not actually break any application.)
288 * Build: Windows: Remove unnecessary vsnprint define.
293 * Fixed another two memory leaks.
294 (Armin Burgmeier) Bug #563321 (Arjan Franzen)
295 * Removed obsolete MSVC6 project files
300 * Added new Schema and SchemaValidator classes to MSVC project files
301 (Arjan Franzen, Arming Burgmeier) Bug #563664.
302 * Avoid a memory leak in Validator::check_for_exception.
303 (Arjan Franzen, Murray Cumming) Bug #563321.
304 * Avoid a memory leak in schema class.
305 (Balazs Tirpak, Murray Cumming) Bug #312216.
311 * Attribute: Return the correct value even when using a namespace.
312 (Murray Cumming) Bug #547689 (Sergei Fedorov)
313 * Added Schema and SchemaValidator classes, demonstrated in
314 examples/schemavalidation.
315 (Emilien KIA) Bug #312216.
316 * Element: Added add_child_text() with a previous_node parameter, for adding
317 between existing nodes. Added add_child_text_before() too.
318 * Node: Added add_child() with a previous_node parameter, for adding between
319 existing nodes. Added add_child_before() too.
321 * SaxParser: added parse_chunk_raw().
327 * Attribute: Return the correct value even when using a namespace.
328 (Murray Cumming) Bug #547689 (Sergei Fedorov)
329 * Fixed MSVC++ Windows build.
334 * SaxParser: added parse_chunk_raw().
336 * examples: sax_parser: Catch convert errors when printing an exception to
337 std:cout, though libxml++/libxml should always supply valid UTF-8.
342 * Added Schema and SchemaValidator classes, demonstrated in
343 examples/schemavalidation.
344 (Emilien KIA) Bug #312216.
345 * Element: Added add_child_text() with a previous_node parameter, for adding
346 between existing nodes. Added add_child_text_before() too.
347 * Node: Added add_child() with a previous_node parameter, for adding between
348 existing nodes. Added add_child_before() too.
353 * Document: Fix a memory leak, by calling xmlCleanupParser
355 (Deng Xiyue) Bug #501168 (Matt G.)
356 * Build: Fix the build with gcc 4.3 pre-releases.
357 (Martin Michlmayr) Bug #510053.
362 * Element: Added get_attribute_value(),
363 to get a simple text value for an attribute.
364 (Stef Walter) Bug #373573.
365 * Added an experimental --enable-api-exceptions
366 configure option, to allow libxml++ to build without
372 * Added an experimental --enable-api-exceptions
373 configure option, to allow libxml++ to build without
378 * Element.h: Added get_attribute_value(),
379 to get a simple text value for an attribute.
380 (Stef Walter) Bug #373573.
384 * TextReader: get_name(): Fixed a memory leak.
385 (Christophe de Vienne) Bug #447535.
389 * Document::add_comment,
390 Element: add_child_text(), add_child_comment():
391 avoid accessing freed memory. (Murray Cumming)
395 * Slight win32 build improvement, possibly.
397 * Slight improvement to examples.
402 * Node: Adedd get_next_sibling() and get_previous_sibling().
408 * Node: Added get_parent() Bug #351876 (Patch by Nate Nielsen)
409 * TextReader: Added TextReader(const char* data) constructor, for
410 parsing memory buffers. Bug #351215 (Patch by Nate Nielsen)
411 * Element::set_attribute(): Really return the new attribute.
412 Bug #361950 (Patch by Nate Nielsen)
413 * Build: Added MS Visual Studio 2005 project files.
420 - Improved ContentNode documentation (Murray Cumming)
424 * First unstable 2.13.x release, to become stable 2.14.x, for GNOME 2.14.
426 - Added find() overload that takes namespaces to register during the search,
427 using xmlXPathRegisterNs(). Bug #323935. (Robert Fleming)
428 - set_namespace(): When creating a default namespace, avoid the
429 "The namespace () has not been declared" warning, by passing 0 to
430 xmlSearchNs() instead of an empty string. Bug #318186.
432 * Build: Fix buildir!=srcdir builds. Bug #319863.(Vadim Zeitlin)
434 - Tutorial: Mention pkg-config.
435 - Reference: Grammar fixes and a small fix for find().
440 * Added the state "Reading" to xml Reader States list.
444 * First unstable 2.11.x release, to become stable 2.12.x
445 * Fixed Document::set_entity_declaration behavior (Murray Cumming)
446 * Updated MSVC.Net2003 project files (Cedric Gustin)
447 * Fixed bugs #301727, #301712, #156352, #161825, #307481, #314419
451 * Fixed documentation packaging problems (Murray Cumming, Christophe de Vienne)
455 * Added MSVC .Net 2003 support (Cedric Gustin)
456 * Improved documentation + Added a manual (Murray Cumming)
457 * Fixed a bug in utf8 handling in Document::do_write_to_string (Murray Cumming)
461 * First unstable 2.9.x release, to become stable 2.10.x.
462 * DomParser, SaxParser: Added
463 parse_memory_raw(const unsigned char* contents, size_type bytes)
464 for parsing non-utf8 text or text of unknown encoding.
470 * Changes compared to libxml++ 2.7:
471 - Added Validator and DtdValidator classes.
475 * Fixed bug #150082 (Christophe de Vienne)
479 * Added Validator and DtdValidator (Guillaume Arreckx)
481 2004-05-05 2.6.1 (stable):
483 * Fixed an issue (#141824) with Glib::ustring.
484 * Fixed ContentNode::SetContent behavior.
486 2004-04-13 2.6.0 (stable):
488 * Corrected constness of TextReader::get_current_node (Murray Cumming)
490 2004-03-02 2.5.2 (unstable):
492 * Fixed bug #134390: "SEGFAULT in Element::get_attribute" (John Coyle)
495 2004-02-09 2.5.1 (unstable):
497 * Introduced Glib::ustring instead of std::string (Murray Cumming)
498 * Added Document::create_root_node_by_import (Kim Garrison)
499 * Fixed bugs #131018, #131329 and #132014.
500 * Added TextReader interface (Christophe de Vienne)
502 2003-12-18 1.0.0 (stable):
504 * Updated msvc files (Ephraim Vider)
505 * Fixed an issue in SaxParser (Murray Cumming)
507 2003-12-08 0.28 (unstable):
509 * Added entity handling to the SAX parser + examples (Dan Dennedy and Murray Cumming)
510 * Replaced SaxParser::AttributeMap with an ordered container (Christophe de Vienne)
511 * Fixed an issue with threading (Christophe de Vienne)
512 * Complete switched to pkg-config (Christophe de Vienne)
514 2003-11-05 0.27 (unstable):
516 * Completed documentation
517 * Added Element::add_comment (Dan Dennedy)
518 * Wrapped xmlIO output buffers and added Document::write_to_stream (Christophe de Vienne)
519 * Cleaned and made more consistent Element API (Murray Cumming)
520 * Added entities support in DomParser (Murray Cumming)
522 2003-09-23 0.26 (unstable):
524 * Added import_node example into MSVC6 project files (Ephraim Vider)
525 * Node::import_node now takes a const Node (suggested by Rafael Vuijk)
526 * Fixed threading issue due to incorrect libxml2 initialisation (Fredrik Arnerup)
527 * Updated Doxyfile (Christophe de Vienne)
528 * Added Namespaces support (Dan Dennedy, Murray Cumming)
530 2003-07-18 0.25 (unstable):
532 * Fixed MSVC6 project files (Ephraim Vider)
533 * Added Node::import_node (Eric Bourque)
534 * Removed throw specification (Christophe de Vienne).
535 * Removed old-style autoconf macro for libxml++ detection (Christophe de Vienne).
536 * Removed unused examples (Murray Cumming)
538 2003-06-11 0.24 (unstable):
540 * Added Document::write_to_file_formatted() and
541 Document::write_to_string_formatted() - they add white space indenting.
542 (Christophe de Vienne)
543 * Added ContentNode::is_white_space() to make it easier for applications to
544 ignore white space such as indenting. (Murray Cumming)
545 * Node: Added set_name(). (Christophe de Vienne)
546 * Compiles with gcc's pedantic warnings as errors.
547 (Christophe de Vienne)
548 * libxml++ header files no longer include any libxml header files.
549 (Christophe de Vienne)
550 * Removed superfluous standalone parse_* methods in document.[h|cc]
552 * Minor reference documentation corrections.
554 * Replaced some <istream> with <iostream> to support older compilers.
556 * Added classes to wrap the missing node types. (Ephraim Vider).
557 * Fixed a memory leak in write_to_string[_formatted] functions. (Morten Hanssen)
558 * Fixed compile error in keepblanks.h with MSVC 6.0. (Christophe de Vienne).
559 * Fixed segfault in DomParser::parse_stream on parsing failure.
560 (Christophe de Vienne).
562 2003-05-20: 0.23 (unstable):
564 * Fixed incorrect use of xmlKeepBlanksDefault. Handling of white spaces
565 is now conforming to xml specification. (Christophe de Vienne)
566 * Classes inherit from NonCopyable to avoid mistakes and clarify the
569 * Node::find() returns empty NodeSet if it does not find the path.
571 * DomParser: Fixed memory leak. (Christophe de Vienne, Thierry Blanchard)
572 * Fixed NetBSD compilation (Chistophe de Vienne, Jaka Jejcic)
573 * Improved .spec.in file. (Eric Bourque)
574 * Some MSVC++ support and minor corrections. (Ephraim Vider)
579 - Reduced API duplication - you must now use get_document().
581 - Now throws exception if document not found.
582 (Christophe de Vienne)
583 - Added const get_document() overload. (Murray Cumming)
588 - Validation now supported: Use Parser::set_validate() to turn on validation.
589 Parsers will then throw validation_error exceptions if validation fails.
591 - SaxParser: Added parse_chunk() for gradual parsing of XML fragments.
594 - Moved add_child_content(), get_child_content(), set_child_content(),
595 and has_content() to Element class.
596 - Fixed set_child_content() to add content instead of creating a node.
598 * Added spec file for RPMs. (Eric Bourque)
601 2003-02-15: 0.20 (unstable):
603 * Node::remove_child() now works.
605 * Added examples/dom_xpath.
606 (Stefan Seefeld, Murray Cumming)
608 2003-02-08: 0.19 (unstable):
610 * The imlementation now uses libxml's API more instead of reimplementing data structures.
611 (Stefan Seefeld, Murray Cumming)
612 * Attribute::get_value() use libxml's API properly, so it now respects the DTD.
614 * Node: Added get_path() and find() for xpath lookup. (Stefan Seefeld)
615 * Attribute now inherits from Node, as required by the find() method. (Stefan Seefeld)
616 * Added Document class. (Stefan Seefeld)
617 * Added cobj() accessors, in case you need to use unwrapped libxml API. (Murray Cumming)
619 Added CDATA section handler.
620 fixed a potential buffer overflow problem
623 2003-01-09: 0.18 (unstable):
625 * big API change for nodes handling : the different types of node now herit
626 from a base Node class. This, among other advantages, avoids previous ambiguity
627 on content() acessors meaning.
628 * little bugfixes and improvements in SaxParser.
630 2002-12-10: 0.17 (unstable):
632 * properties are now called attributes.
633 * it is now possible to throw exceptions from callback
634 methods in SaxParser.
635 * parsers can parse from a stream.
636 * memory leak fixed in SaxParser.
637 * configure check for libxml2 2.4.1 at least.
641 2002-11-20: 0.16 (unstable):
644 * Xml type name prefix removed.
645 * Tree replaced with DomParser.
646 * Parser renamed to SaxParser.
647 * Property renamed to Attribute
648 * Errors thrown as exceptions.
649 * Both parsers can parse from either file or memory.
651 * Simplified memory management -
652 no more returning of static temporaries.
653 * set_*() methods return void.