1.0.5: 2005-06-13 Christophe de Vienne * libxml++/parsers/saxparser.cc: As suggested by Darko Miletic, replaced "" by std::string() in expressions using ?: operator. This avoid Borland compilers to complain. 2005-02-12 Christophe de Vienne * libxml++/nodes/node.cc: Fixed a little inefficency in find (#161925) 2005-02-12 Christophe de Vienne * libxml++/attribute.h, libxml++/document.h, libxml++/dtd.h, libxml++/io/outputbuffer.h, libxml++/nodes/node.h, libxml++/parsers/parser.h, libxml++/parsers/saxparser.h: Removed extra semicolons so gcc 3.4 won't complain (#162350). 2004-08-13 Christophe de Vienne * libxml++/parsers/domparser.cc, libxml++/parsers/parser.cc: Fixed bug #150082. 1.0.4: 2004-05-23 Christophe de VIENNE * libxml++/Makefile.am: Added api_export.h to h_sources_public. 1.0.3: 2004-04-26 Christophe de VIENNE * libxml++/nodes/contentnode.cc: Fixed set_content which used xmlNodeAddContent instead of xmlNodeSetContent (thanks to Marcello Orizi who outlined it). 2004-04-26 Christophe de VIENNE * libxml++/api_export.h: Fixed the LIBXMLPP_DLL macro which made the compilation failed when not compiling a dll. 2004-03-03 Christophe de VIENNE Made necessary changes to be able to compile a dll under mingw32. Tested under linux, should work as well with msys. This will normaly not break the ABI under unix. * configure.in: - Added detection of mingw and definition of WIN32_LDFLAGS and WIN32_LIBADD. - Tells LIBTOOL to construct a dll. - Changed version number to 1.0.3 for future release (not scheduled yet). * libxml++/api_export.h: Defines LIBXMLPP macro. * libxml++/(*/)Makefile.am: Added -DLIBXMLPP_COMPILATION to DEFS * libxml++/(*/)*.h: Added LIBXMLPP to each class declaration. 1.0.2: 2004-02-16 Christophe de VIENNE * libxml++/nodes/element.cc: Check return value of xmlHasNsProp to fix issue #134390 (as reported by John Coyle). 2004-02-16 Christophe de VIENNE * libxml++-1.0.pc.in: Added libxml-2.0 to Requires: and removed @LIBXML_LIBS@ from libs, as suggested by Albert Chin. 2004-02-16 Christophe de VIENNE * libxml++/nodes/node.[h|cc], libxml++/parsers/parser.h: Merged in patches from Albert Chin to get libxml++ build using the SUN, HP, SGI & AIX C++ compilers. 2004-02-06 Christophe de Vienne * libxml++/parsers/sax_parser.cc: Fixed issue #132014. 1.0.1: 2004-01-13 Christophe de Vienne * libxml++/io/document.cc: Gives NULL strings instead of empty ones to xmlCreateIntSubset. Fixes issue #131329. 2004-01-12 Christophe de Vienne * libxml++/io/outputbuffer.cc: Fix return value of xmlIO callbacks. (Fixes issue #131018). 1.0.0: 2003-12-18 Ephraim Vider * examples/sax_parser_build_dom/svgelement.cc,svgpath.h: - removed unneeded method qualification (msvc6 error) * examples/sax_parser_entities/myparser.cc: - removed namespace qualification (msvc6 error) - removed return from void function 2003-12-18 Ephraim Vider * win32_msvc6: updated MSVC projects to include new sources and examples 2003-12-12 Christophe de Vienne * libxml++/parsers/sax_parser.cc: removed initialisation of userData with this at the context creation (solution given by Murray). 2003-12-11 Murray Cumming * libxml++/Makefile.am: Generate a library with 1.0 in the name, instead of 0.1 * configure.in: Change version to 1.0.0, and change shared library version to 1.0.0 because we are staring again witt the first version of a new shared library. * examples/Makefile.am_fragment: Link to the new library name. * libxml++-1.0.pc.in: Change the library name that pkg-config reports for --libs. 2003-12-08 Ephraim Vider * libxml++/document.cc: remove return statement from void functions 0.28: 2003-12-08 Christophe de Vienne * libxml++.spec.in: Removed libxml++.m4 and xml++-config from %files section. 2003-12-08 Murray Cumming * examples/ Added sax_parser_build_dom example from Dan Dennedy. It does some funky stuff (see the comments) but it is an interesting concept. See the description in examples/README. 2003-12-03 Christophe de Vienne * configure.in: use libxml-2.0 instead of xml2 for libxml2 detection by pkg-config. * libxml++/parser/sax_parser.[h|cc]: Replaced AttributeMap by AttributeList, which is now an ordered container (std::deque). Added a functor that can be used with std::find_if to get an Attribute by it's name. * libxml++/document.h: Fixed a typo in a doxygen command. 2003-12-03 Murray Cumming * examples/README: explained what the examples do. 2003-11-28 Christophe de Vienne * libxml++/docs/index.html: Added libxml2 version we relay on, as suggested by Paul Breslin. * configure.in: Prepared 0.28 release. Check for libxml2 >= 2.5.8 using pkg-config instead of old-style autoconf macro. * acinclude.m4: Removed. 2003-11-27 Murray Cumming * Added examples/sax_parser_entites to test the new functionality. * Added doxygen documentation to almost every class and method, including mentioning that the parse methods throw exceptions. 2003-11-27 Murray Cumming * Applied patch from Dan Dennedy to add entity handling to the SAX parser, using a 2nd Document instance to manage the entity definitions in order to provide a default entity reference resolver implementation for on_get_entity(). With some minor changes from me. 2003-11-13 Christophe de Vienne * libxml++/io/Makefile.am: Made libio a non installed library. * libxml++/document.cc: Fixed a serious issue with threading: callbacks were defined only for the main thread. 0.27: 2003-10-28 Murray Cumming * libxml++/nodes/element.[h|cc]: Changed get_child_content() to get_child_text(), set_child_content() to set_child_text(), add_comment() to add_child_comment(), and add_content() to add_child_content() to make the API clearer. 2003-10-25 Christophe de Vienne * libxml++/document.[h|cc]: Added Document::add_comment and added some documentation. 2003-10-22 Murray Cumming * libxml++/parsers/saxparser.[h.cc]: Added on_entity_declararation() callback, and demonstrated it in examples/sax_parser/. Added documentation to on_get_entity() giving clues about how to use it, though it is too difficult for me to try. 2003-10-18 Christophe de Vienne * All: All private members previously having a leading underscore in their name now have it postfixed. Ex: _impl becomes impl_. 2003-10-18 Christophe de Vienne * libxml++/io/outputbuffer.[h|cc]: Removed conversion operator to underlying C structure. cobj() is now public. * libxml++/document.cc: use OutputBuffer::cobj() instead of implicit conversion. 2003-10-18 Christophe de Vienne * libxml++/nodes/Makefile.am: Removed some trailing white spaces after a backslash. 2003-10-14 Murray Cumming * Added lots of doxygen documentation, try to document everything 100%. * libxml++/nodes/element.[h|cc]: Made get_attributes() non-const and added a const get_attributes() const overload, like Node::get_children(). * Moved AttributesList typedef from Node to Element, because that's where it is used. * libxml++/parsers/parser.[h|cc]: Added get/set_substitute_entities(), like get/set_validate(), which affects _context->replaceEntities in initialize_context(). * Added libxml++/nodes/entityreference.[h|cc], with a get_resolved_text() method. * libxml++/document.cc: - on_libxml_construct(): For the default, used when a node is not recognised, create a Node rather than a ContentNode. Everything is a Node so this should have less chance of being wrong. - Added case to create an EntityReference. * Added examples/dom_parse_entities. 2003-09-30 Jonathan Wakely * libxml++/document.cc, libxml++/nodes/element.cc, libxml++/nodes/node.cc: Preserve const-quals when casting between strings of different character types. 2003-09-26 Christophe de Vienne * libxml++/io/outputbuffer.[h|cc]: Yet another cleaning of the interface and implementation. OutputBuffer is now non copyable, and the callback process is now the same for write and close. * libxml++/io/(ostream)outputbuffer.h: Added Doxygen documentation. 2003-09-26 Christophe de Vienne * libxml++/io/: Small corrections after Murray comments on the patch. It's even more clean now. 2003-09-26 Christophe de Vienne * libxml++/io/: Added classes to wrap xmlIO output buffers. This classes are OutputBuffer and OStreamOutputBuffer. * libxml++/document.h: - Added write_to_stream, which is implemented thanks to OutputBuffer. - Removed virtual specifier on write_to_xxx functions. Their implemention now calls a private virtual function do_write_to_xxx. This also avoid having almost identical functions implementation in normal and formatted versions of the functions. 2003-09-24 Christophe de Vienne * libxml++/examples/dom_build/main.cc: Now demonstrate add_comment too. 2003-09-24 Dan Dennedy * libxml++/nodes/element.[h|cc]: Added Element::add_comment. 2003-09-23 Christophe de Vienne * libxml++/document.h, libxml++/keepblanks.h, libxml++/noncopyable.h, libxml++/nodes/node.h: Updated documentation. 0.26: 2003-09-22 Christophe de Vienne * examples/dom_build/main.cpp: Use Element::set_attribute instead of Element::add_attribute which no longer exists. 2003-09-19 Murray Cumming * libxml++/node/element.h: Removed add_attribute because it is the same as set_attribute. 2003-09-18 Murray Cumming * libxml++/node/element.h: Added set_namespace_declaration(). element, node: methods take prefix instead of uri and prefix, because that's what we want to specify most of the time. If no such namespace prefix has been declared then an exception will be thrown. If we want to specify a node name and attribute namespaces by uri (which would result in a prefix in the eventual .xml code) then we could add those methods later. If anybody needs them. 2003-09-17 Christophe de Vienne * docs/reference/Doxyfile(.in): Doxyfile is now generated from Doxyfile.in by configure so the version number is included in main page. The dot image format is changed to png, the index is not disabled anymore. 2003-09-15 Fredrik Arnerup * libxml++/document.cc: Added a call to xmlInitParser to avoid threading problems. 2003-09-05 Murray Cumming Based on the patch from Dan Dennedy, with changes: * libxml++/node.[h|cc], libxml++/element.[h|cc]: Added namespace_uri and namespace_prefix parameters to methods, to support speficiation of nodes and children also with namespace information. * Added Node::get_namespace_prefix() and get_namespace_uri() and set_namespace(). * examples/dom_build/: Modified the example to do namespace stuff, to test this. 2003-08-20 Murray Cumming * libxml++/node.[h|cc]: import_node() now takes a _const_ Node, as suggested by Rafael Vuijk. 2003-07-20 Ephraim Vider * win32_msvc6: libxml++.dsp, examples/import_node.dsp, examples/Makefile.am: - added import_node example project 0.25: 2003-07-16 Christophe de Vienne * libxml++.m4, xml++-config.in, configure.in, Makefile.am: removed old-style autoconf libxml++ detection macro and script. 2003-07-15 Christophe de Vienne * all but exceptions/*.[h|cc]: removed throw specification from functions declaration. 2003-07-11 Eric Bourque * nodes/node.[h|cc]: Added import_node function * examples/import_node: Added an example of using import_node, and modified autoconf files accordingly. 2003-06-25 Ephraim Vider * win32_msvc6: libxml++.dsp: added _REENTRANT to support libxml with threads - examples/Makefile.am: added new example project 2003-06-16 Christophe de Vienne * docs/index.html: Added a link to Doxygen website. 2003-06-16 Ephraim Vider * win32_msvc6/*: Fixed MSVC6 project files. 2003-06-13 Christophe de Vienne * docs/Makefile.am: Fixed the post-html rule which was sending twice the reference. * docs/index.html: Added keyword "XML". 0.24: 2003-06-11 Christophe de Vienne * libxml++/parsers/domparser.cc: - Fixed parse_stream. Parsing success was not checked before creating Document. - Check for errNo after parsing. 2003-06-02 Ephraim Vider * libxml++/nodes: Added ContentNode as a base class for all non-element nodes - TextNode and CommentNode are derived from ContentNode - Added CdataNode and ProcessingInstructionNode as specific types derived from ContentNode - Will create ContentNode as a default node type when assert is disabled - Modified dom_parser example to better handle new types Modified files: textnode.[h|cc] commentnode.[h|cc] Added files: contentnode.[h|cc] cdatanode.[h|cc] processinginstructionnode.[h|cc] * node.cc: - Fix. return empty string and not 0 * updated MSVC projects to include new sources and example 2003-06-10 Jonathan Wakely * libxml++/parsers/saxparser.cc: Replace with to support older compilers. 2003-06-06 Christophe de Vienne * libxml++/document.cc: Little change in write_to_xxx_formatted. The keepblanks parameter is kept to true, but xmlIndentOutputTree is set to 1. This avoid libxml2 to add some significant whitespace into content nodes, but still format the output. 2003-06-05 Christophe de Vienne * libxml++/keepblanks.[h|cc]: Moved KeepBlanks::Default definition to .cc file if compiler is MSVC 6.0. 2003-06-04 Morten Hanssen * libxml++/Document.cc: Fixed a memory leak in write_to_string[_formatted]() functions. 2003-06-02 Murray Cumming * libxml++/Document.[h|cc]: Removed the standalone parse_* methods because they just duplicate functionality and nobody seems to be using them. Renamed the private construct() and destruct() callbacks to on_libxml_construct() and on_libxml_destruct() and added some simple comments to explain their purpose. * libxml++/node.[h|cc]: Added Node::is_white_space(), to make it easier for the application to ignore white space. Used it in the dom_parser example.. 2003-05-29 Murray Cumming * Removed some struct keywords from method and variable definitions. They don't seem to be necessary, and they do not match the method definitions in the .cc files. * Some syntax clean-up - tabs to spaces and adding spaces. * examples/dom_parse/main.cc: Say when something is a text node. 2003-05-28 Christophe de Vienne * lixml++/document.[h|cc]: Added write_to_file_formatted and write_to_string_formatted. 2003-05-25 Jonathan Wakely * libxml++/parsers/saxparser.cc: Included 2003-05-23 Jonathan Wakely * libxml++/parsers/saxparser.[h|cc]: Correct comments. 2003-05-23 Christophe de Vienne * all header files: Removed libxml2 headers inclusion. Added necessary forward declaration of libxml2 structures. * libxml++/parsers/saxparser.[h|cc]: Moved static callback functions into a struct defined only in the .cc file, SaxParserCallback. Added boolean parameter to SaxParser constructor to activate on_get_entity callback (default to false). This technique could eventually be extended to other functions in the future. * libxml++-1.0.pc.in: removed libxml headers include path from Cflags. 2003-05-22 Christophe de Vienne * libxml++/nodes/node.[h|cc]: Added Node::set_name(). 2003-05-20 Christophe de Vienne * libxml++/nodes/[node.cc|element.h]: Minor syntax adjustments to allow compiling with g++ -ansi -pedantic -Wall without any warning. 0.23: 2003-05-20 Christophe de Vienne * libxml++/keepblanks.[h|cc]: New KeepBlanks class which change settings related to xmlKeepBlanksDefault and xmlIndentTreeOuput. * libxml++/[document.cc|parsers/*parsers.cc]: use KeepBlanks instead of manually call xmlKeepBlanksDefault(). Significant white spaces are not removed/added anymore. * example/dom_read_write/example_output.xml: removed. 2003-05-16 Murray Cumming * libxml++/noncopyable.[h|cc]: New xmlpp::NonCopyable base class, which should prevent people from using automatically-generated copy constructors when they shouldn't. Not tested yet. * libxml++/examples/dom_read_write: New example/test. This does show that we are removing significant white space. This has been discussed on the list and apparently Christophe has a fix for it. 2003-05-06 Andy Glew * libxml++/nodes/node.cc: Node::find( nonexistent_xpath ) now return empty NodeSet 2003-04-24 Christophe de Vienne * libxml++/parsers/saxparser.cc: Fixed a memory leak pointed by "thierry" . The sax handler of the context is not reset to 0 before context release anymore. In parse() the default one is saved then restored after effective parsing, so libxml handle itself its destruction. 2003-04-20 Christophe de Vienne * libxml++/document.cc: Removed a warning message that was put on std::cout if an unknown type of node was created and replaced it by an assert. This avoid the need to include iostream(.h). 2003-04-18 Murray Cumming * Applied Jaka Jejcic's patch to fix compilation on NetBSD, including iostream.h instead of istream.h. 2003-04-09 Eric Bourque * libxml++.spec.in: modified spec file to be library version agnostic. 2003-03-19 Ephraim Vider * added msvc support in win32_msvc6. 2003-03-17 Ephraim Vider * Modified sax_exception example: - corrected Clone() return type for MyException in myparser.[h|cc] - catch all exceptions in main.cc - handle real errors too 0.22: 2003-03-15 Murray Cumming * libxml++/parser/domparser.cc: Added const overload of get_document(). 2003-03-13 Christophe de Vienne * libxml++/parser/domparser.cc: Test if context creation is successfull in the different parse_xxx functions. If it is no an internal_error is thrown. 2003-03-06 Ephraim Vider * made DomParser a wrapper around Document removed all functions that were duplicates of document functions and added get_document() files: domparser.[h|cc] document.h * fixed compilation errors for msvc: - corrected Clone() return type for derived exceptions - corrected getline to std::getline in saxparser.cc - changed clear() to erase() in parser.cc - added #define for vsprintf in parser.h - fixed warning in element.cc 0.21: 2003-02-21 Eric Bourque * Added spec.in, for creating RPMs. 2003-02-20 Murray Cumming * libxml++/nodes/node.[h|cc]: Moved get_child_content(), set_child_content(), add_content(), and has_content() from Node to derived Element class instead of just throwing an exception if it isn't an Element. This means you can't use set_child_content() on a TextNode - you should be using TextNode::set_content() anyway, which makes a lot more sense. Corrected set_child_content() to create a TextNode instead of creating a node with the content as the name, fixing the output of the dom_build example. 2003-02-20 Murray Cumming * libxml++/parsers/parser.[h|cc]: initialize_contex(): Request iniitialization and connect callbacks check_exception(): Throw exception if any validation problems have been found - the messages are built up gradually by repeated callbacks. set_validate(): Enables validation before calling parse_*(). Alternatively, use 2nd bool parameter to the DomParser constructor. * libxml++/exceptions/: Added validation_error class. * examples/dom_parser: Added a DTD and changed example.xml to something that uses it. Also added example_invalid.xml to test the exceptions. 2003-02-12 Ole Laursen * examples/sax_parser/main.cc: Added chunk-wise parsing to the example. * libxml++/parsers/saxparser.[h,cc]: Added functionality for parsing chunks of data. 2003-02-17 Murray Cumming * libxml++/parsers/*.[h|cc]: All parsing is now done via contexts, which required a little duplication of the implementation of functions such as xmlParseFile(), most of which is now in DomParser::parse_context(). This avoids use of global functions such as xmlKeepBlanksDefault() by setting these booleans directly in the context, in Parser::initialize_context(). However, xmlCreateFileParserCtxt() does seem to be affected by xmlKeepBlanksDefault so we still have to use it temporarily, restoring the old value afterwards - see the comments in DomParser::parse_file(). This should allow us to add validation to the API. 0.20: 2003-02-15 Murray Cumming * libxml++/nodes/node.cc: (remove_child): Implemented it with xmlUnlinkNode and xmlFreeNode, so that it's actually removed. 2003-02-15 Murray Cumming * Added examples/dom_xpath, with code from Stefan Seefeld's dom example. 2003-02-15 Murray Cumming * Reverted the Node::child_iterator API change because it was undiscussed and is unfinished. The BRANCH_1_0 and HEAD branches are now merged. BRANCH_1_0 should no longer be used. This was never in 0.19. 0.19: 2003-02-07 Murray Cumming * Moved method implementations such as get_attributes() into derived classes instead of using "using methodname();". That seems clearer. However it shows that we should probably create a shared base class for Content and Comment, as in the DOM. 2003-02-06 Murray Cumming * libxml++/parsers/saxparser.[h|cc]: Corrected some coding style. 2003-02-06 Murray Cumming * Changed c_obj() to cobj() because it's more like gobj() used in gtkmm, gnomemm, etc. 2003-02-06 Murray Cumming * libxml++/nodes/node.*: Corrected code style. 2003-02-06 Murray Cumming * libxml++/nodes/node.[h|cc], libxml++/attribute.[h|cc]: Made c_obj() accessors public so people can use them. Provided const and non-const versions of them. Put implementation in .cc file. * Reverted some of Stefan's coding style changes and corrected the coding style in libxml++/nodes/document.[h|cc]. * libxml++/document.h: Made the destructor virtual, because there are virtual methods. 2002-02-04 Stefan Seefeld * libxml++/node.[h,cc]: add new insert_child and append_child methods (using new iterators), add get_path and find methods for xpath lookup * examples/dom: new example code to illustrate the new features 2002-02-03 Stefan Seefeld * libxml++/node.h, libxml++/parsers/saxparser.[h,cc], examples/sax_parser/*.[h,cc], examples/sax_exception/*.[h,cc]: SaxParser::AttributeMap is now a map. 2002-02-03 Stefan Seefeld * libxml++/node.h: add child_iterators for simple C++ style iteration (to get eventually rid of NodeList) 2002-02-03 Stefan Seefeld * libxml++/attribute.[h,cc], libxml++/nodes/node.[h,cc], libxml++/document.cc: derive Attribute from Node, and make get_value() use libxml2 accessor instead of raw pointer 2002-02-03 Stefan Seefeld * libxml++/document.[h,cc], libxml++/parsers/domparser.[h,cc], libxml++/libxml++.h, libxml++/Makefile.am: introduce new Document type. * examples/dom_build/main.cc: make dom_build example use new Document type 2002-02-03 Stefan Seefeld * acinclude.m4: The AM_LIBXML macro now checks for a libxml2 version >= 2.5.1. * libxml++/nodes/node.cc: compare strings, not pointers, in get_attribute() 2003-01-31 Stefan Seefeld * various: overall change to use libxml2 as implementation, not only as I/O backend. With corrections by Murray Cumming. Further explanation by murrayc: Instead of maintaining its own C++ data structures and then creating libxml data structures from them, it now manipulates the libxml data structures directly, so the C++ and C APIs are always in sync. 2003-01-21 Valentin Rusu * added CDATA section handler to SaxParser 2003-01-05 Valentin Rusu * fixed a potential buffer overflow problem into saxparser.cc 0.18: 2003-01-31 Stefan Seefeld * various: overall change to use libxml2 as implementation, not only as I/O backend. 2003-01-05 Murray Cumming * examples/dom_build/main.cc: Removed some useless test C code. 2002-12-24 Morten Brix Pedersen * Include instead of to compile on gcc 2.95.4. 2002-12-26 Murray Cumming * libxml++/nodes/element.c (write): Add back the code to write the attributes to the C libxml structure. This code got lost during the refactoring. 2002-12-25 Murray Cumming * Removed unused constructors, to simplify things. Made Node's destructor virtual, because we delete them polymorphically, and because it has virtual methods. 2002-12-25 Murray Cumming * libxml++/nodes/node.[h|cc]: Removed the initialized member variable and its accessor, because it's not used. 2002-12-19 Murray Cumming * libxml++/parsers/domparser.[h|cc]: get/set_root_node() now returns an Element instead of a Node. 2002-12-19 Murray Cumming * Changed const & accessors to get_*() methods. For instance, Node::name -> Node::get_name Node::children() -> Node::get_children() Element::attributes() -> Element::get_attributes() Attribute::value -> Attribute::get_value() 2002-12-18 Murray Cumming * Added libxml++/nodes/commentnode.[h|cc] and used it in Node so that comments don't just show up as name=comment Nodes. * examples/dom_parser/example.xml: Added a comment. * examples/dom_parser/main.cc: Do a dynamic_cast<> check for comments too. 2002-12-18 Christophe de Vienne * libxml++/parser/saxparser.cc: Fixed a bug in exception handling in parse_stream. Thanks to Fredrik Arnerup for reporting the bug. 2002-12-17 Murray Cumming * Added libxml++/nodes/textnode.[h|cc]. This should remove the confusion about whether content()/set_content() should be used on a text node or the parent of a text node. * libxml++/nodes/node.[h|cc]: - Node::write() is now virtual, and different in TextNode. - content() replaced by get_child_content, which returns a TextNode* instead of a string. - set_content() replaced by set_child_content(). * Added libxml++/nodes/element.[h|cc] so that TextNode can inherit from a Node class without the attributes API. As per the Java DOM API, Node still has the children API - I guess there's some reason for that, though I don't see how a TextNode could have children. 2002-12-17 Murray Cumming * Moved node.[h|cc] into nodes sub directory, in preparation for the multiple-node-types API change. 2002-12-12 Jonathan Wakely * libxml++/parsers/saxparser.cc, saxparser.h (on_get_entity): New virtual function to allow derived classes to override entity handling 2002-12-16 Murray Cumming * libxml++/node.cc: write(): - Don't set the node->type directly. Let xmlNodeSetContent take care of adding a suitable child node. This was leading to segfaults when write() later tried to add a child node to a text node. - Throw internal_error exception when xmlNewChild returns NULL. 0.17:. 2002-12-10 Christophe de Vienne * configure.in: updated version numbers for next release. Generic version is now 0.17, library version is 3:0:0 * NEWS: updated with changes since 0.16 version. 2002-12-10 Christophe de Vienne * libxml++/node.cc: fixed write() which was using the accessors content() and has_content(). Since they return something for both the text node and the parent node, the output was weird. 2002-12-09 Murray Cumming * libxml++/node.cc: content(): If the cached content string is empty, try to get the content of a child "text" node. This makes content() work as expected after creating a document with set_content() and later reparsing it. 2002-12-09 Murray Cumming * libxml++/parsers/dom_parser.cc (release_underlying): Set pointers to 0 so that the get_*() methods generate new instances instead of returning invalid pointers. 2002-12-09 Murray Cumming * libxml++/node.cc: Node::remove_child() and Node::remove_attribute: delete the objects when forgetting about them. * libxml++/node.h: Added reference docs explaining the above. 2002-12-07 Murray Cumming * libxml++/parsers/domparser.cc, saxparser.cc: Added comments about the use of xmlKeepBlanksDefault() and xmlLineNumbersDefault(). * libxml++/parsers/saxparser.[h|cc]: Change exception & to exception&. 2002-12-06 Christophe de Vienne * libxml++/parsers/domparser.cc: Enabled xml option LineNumbers and disabled KeepBlanks before each parsing. * libxml++/parsers/sax_parser.cc: Enabled xml option KeepBlanks before each parsing. * example/dom_parser/main.cc: Added line number display for each non-content node. Changed a bit content display * Note: in a near future I may change these options settings to let the user choose which options he wants/wants not. 2002-12-03 Jone Marius Vignes * libxml++/parsers/domparser.cc: Changed the exception in write_to_string() to "write_to_string() failed." * libxml++/parsers/domparser.h: Corrected documentation of write_to_string() and write_to_file() to clarify that these methods doesn't return booleans 2002-12-02 Christophe de Vienne * libxml++/exceptions/*.[h|cc]: Added and implemented virtual methods Raise() and Clone. * libxml++/parser/sax_parser.[h|cc]: Each callback method can now throw some exceptions as long as they herit from xmlpp::exception AND implement Raise() and Clone(). * libxml++/examples/sax_exception/: Added an example which demonstrate the use of exceptions inside a SaxParser. 2002-11-29 Murray Cumming * autogen.sh: Added libtoolize to generate files such as ltmain.sh. 2002-11-28 Christophe de Vienne * acinclude.m4: The AM_LIBXML macro now checks for a libxml2 version >= 2.4.1. 2002-11-21 Christophe de Vienne * libxml++/parsers/*.[h|cc]: added Parser::parse_stream method and implemented it in both DomParser and SaxParser. Tests based on the examples (not commited in the cvs) worked perfectly. 2002-11-20 Christophe de Vienne * libxml++/parsers/saxparser.cc: fixed a memory leak (thanks to Chris Leishman who reported it. 2002-11-20 Murray Cumming * Changed use of the term properties to attributes in the API, because that is the correct terminology. 0.16: 2002-11-19 Christophe de Vienne * configure.in: updated version numbers for next release. version is set to 0.16, library version to 2:0:0 2002-11-19 Murray Cumming * docs: Added index.html, which can be a main website page. * docs/Makefile.am: Added rsync command to upload the html, including the reference documentation. 2002-11-19 Murray Cumming * Added Dtd class, which is just a collection of std::strings. * libxml++/parsers/domparser.[h|cc]: Added set_internal_subset() and get_internal_subset() to set the DTD declaration. This is set in the underlying C xmlDoc during write_to_file() and write_to_disk(). 2002-11-18 Murray Cumming * libxml++/node.[h|cc]: - Rename is_content() to has_content(), because that's what it tells us. Removed _is_content member bool - we can check _content.empty() instead. - write(): Do not manually set the xmlNode's type field to TEXT. This corrupted the tree. Tested content nodes in example/dom_build. 2002-11-18 Murray Cumming * libxml++/parsers/domparser.cc (write_to_*): Corrected no-root-node check. 2002-11-18 Murray Cumming * libxml++/exceptions/exception.[h|cc]: Corrected signature of what() method, adding const throw(). 2002-11-18 Murray Cumming * libxml++/parsers/domparser.[h|cc]: Added DomParser::set_root_node(). * examples: Added dom_build, to show runtime construction of an XML tree. 2002-11-18 Murray Cumming * Parser, DomParser, SaxParser: parse_file() and parse_memory() now throw exceptions. * DomParser::write_to_file(): throws exception instead of using a bool return value. * examples/domparser/: Catches exceptions. 2002-11-18 Christophe de Vienne * libxml++/exceptions: splitted exception.[h|cc] in this directory. The libxml_error has been removed for now, and a parse_error added. 2002-11-17 Christophe de Vienne * libxml++/attribute.h: Changed macro __LIBXMLPP_PROPERTY_H to __LIBXMLPP_ATTRIBUTE_H * libxml++/exception.[h|cc]: Added xmlpp::exception, xmlpp::libxml_error and xmlpp::internal_error classes. It's very basic for now. 2002-11-17 Murray Cumming * Node, Attribute: set_*() method now have void return types. * DomParser: Now has an empty underlying in-memory document when the default constructor is used. This means that get_root_node() should always return something, so we can build XML documents in memory without loading any XML first. 2002-11-16 Murray Cumming * libxml++/attribute.h: Added explicit to constructor. 2002-11-16 Murray CUmming * libxml++/parsers/domparser: Renamed write() method to write_to_file() and added write_to_string(). 2002-11-16 Murray Cumming * libxml++-1.0.pc.in: More corrections. This was hopelessly broken before. 2002-11-16 Murray Cumming * libxml++-1.0.pc.in: Corrected typo. 2002-11-16 Murray Cumming * docs/reference/Doxyfile: Used doxywizard to mark the Recursive option, so it reads the libxml++/parsers directory too. 2002-11-16 Murray Cumming * Attribute, Node: Added Doxygen class comment block. Changed some something * to something*. 2002-11-16 Murray Cumming * libxml++/node.[h|cc]: Added parameter names. Made const and non-const overloads of children() method. * libxml++/parsers/domparser.[h|cc]: Added const get_root_node() const overload. 2002-11-16 Christophe de Vienne * libxml++/parsers/*: renamed method Parser::parse to Parser::parse_file 2002-11-16 Christophe de Vienne * libxml++/parsers/saxparser.[h|cc]: rewritten SaxParser::parse(filename) and SaxParser::parse_memory(string). They both use a SaxParser::parse() method. The parse_chunk and finish methods has been removed. * example/sax_parser/parser.cc: minor bugfix: the Attribute pointer was printed instead of the value. 2002-11-16 Christophe de Vienne * Property: has been renamed to Attribute. However, the "properties" token has been kept when speaking of all the attributes of a node, as in the libxml library. * node.cc: rewritten a few loops so they have a more 'c++' looking. rewritten some portions of code where an attribute is searched by name. 2002-11-15 Murray Cumming * Changed e.g. std::string &something to std::string& something, using regexxer. 2002-11-15 Christophe de Vienne * example/sax_parser/parser.cc: #included 2002-11-15 Christophe de Vienne * libxml++/parsers/saxparser.cc: #included cstdarg instead of stdarg.h to follow the c++ standard. #included to have std::cerr - it's needed on strict c++ compiler (g++ 3.2 for instance). * example/dom_parser/main.cc: #included 2002-11-15 Murray Cumming * libxml++/parsers/saxparser.cc: #included stdarg.h - it seems to be necessary with some compilers. 2002-11-15 Murray Cumming * DomParser:: Added get_encoding() and write() methods. * Removed Tree - Use DomParser instead. 2002-11-15 Murray Cumming * SaxParser now inherits from Parser, with parse() and parse_memory() methods. * Added example/sax_parser example, but the start_element callback doesn't seem to be called. 2002-11-15 Murray Cumming * Parser, DomParser: Added parse_memory() method. * Node::children(): Removed bad early-optimisation hack - it returned a static function variable instead of returning by value. This meant that >1 results of children() could not be used simultaneously. For instance, this meant that it could not be called recursively. 2002-11-12 Murray Cumming * Node, Property: Used explicit keyword on constructors. 2002-11-12 Murray Cumming * Added parsers directory. * Renamed Parser to SaxParser. * Added DomParser, intended as a replacement for Tree, but that has not yet been removed. I don't intend to implement the libxml-1 compatibility stuff. * Added examples directory structure, with one tiny dom_parser example. 2002-11-12 Christophe de Vienne * node.[h|cc]: name() method now return a reference. * Tree/Node: The readnode and writenode functions have been removed and transfered somehow into Node as a new constructor and write(). The libxml++-private.[h|cc] has been removed. 2002-11-12 Murray Cumming * Parser: It's no longer a templated type - to provide your own callback implementations you can now just derive your own parser and override the on_*() methods. 2002-11-12 Murray Cumming * Moved implementation into the .cc files. * Changed n, v and p parameter names to name, value and properties. 2002-11-12 Murray Cumming * Split the single xml.[h|cc] files into node, property, tree and parser files, with a libxml++.h header file that includes them all. * Removed the XML prefixes from type names - we don't need it because we use a namespace now. * Placed typedefed lists and map inside their classes. For instance, XMLNodeList is now xmlpp::Node::NodeList. * Node::children(): Use !(n.empty()) instead of (n.length() == 0), for perfomance. * Tree: changed fn parameter names to filename. 2002-11-12 Christophe de Vienne * AUTHORS: Added Murray Cumming to the contributors 2002-11-08 Christophe de Vienne * libxml++/xml.cc: corrected _line initialisation in XMLNode::XMLNode(const XMLNode *from) 2002-11-08 Christophe de Vienne * libxml++/xml.cc: Test if doc encoding is not null before reading it (thanks to Marcel Bosc). 2002-11-05 Murray Cumming * Added docs/reference/. Run make in this directory to generate reference documentation with doxygen. * libxml++/xml.h: Removed macros around namespace - all compilers must now support namespaces. * libxml++/xml.[h|cc]: Replaced (void) with () - it's not necessary in C++. 2002-11-05 Murray Cumming * libxml++/Makefile.am and configure.in: Implemented shared library interface versioning. 2002-11-05 Murray Cumming * Put source code in libxml++ directory, ready for it to be split up into separate files. Client code should now include libxml++/xml++.h rather than just xml++.h. 2002-11-05 Murray Cumming * Headers are now installed in a versioned directory, to allow coexistence with future major versions of libxml++. You may need to remove the previously installed xml++.h file. * Library name changed to libxml++-0.1, to be changed to libxml++-1.0 when libxml++ stabilizes its API. This is also to allow future versions to be parallel installed. * Added pkg-config file as a simpler and more maintainable alternative to the -config file and m4 script. Version 0.14 * Ported to g++ 3.2. The code should now also compile on compilers which are a bit more strict about c++ than previous versions of g++ * Added method XMLNode::line() wich returns the line number of a non content node in the source file. * Added encoding file support through XMLTree::encoding() and XMLTree::set_encoding() methods * Replacement of hash_map by map for node properties lists, since it has been reported to be faster, and to simplify porting to other plarfoms. * libxml++ classes has been put in a separated namespace, libxmlpp. If you don't want namespace, just undefine the LIBXMLPP_USE_NAMESPACE * encoding and compression settings are now loaded at parsing of file/buffer. Version O.12 to 0.13 No Changelog. Version O.11 * Modified interface to allow for more complete coverage of possible uses of XML files. Version O.10 * Added SAX parser. Version O.2 to 0.9 No Changelog. Version O.1 * Original release.