9. Changelog
v1.16 2026-06-16
Anniversary release (pugixml turns 20 this year!). Changes:
-
Behavior changes:
- Elements that have a single empty PCDATA child are now printed as empty element tags (unless
format_no_empty_element_tagsis used)
- Elements that have a single empty PCDATA child are now printed as empty element tags (unless
-
Improvements:
-
PUGIXML_CHARCONV_FLOAToption can be enabled to switch floating point conversions to<charconv>; this requires C++17, makes the conversions locale-independent and can improve performance -
Add
xml_node::ensure_childandxml_node::ensure_attributethat return the child/attribute with the specified name, adding one if it does not exist -
Improve performance of searching for nodes and attributes by name
-
Loading a document from an empty buffer no longer performs memory allocations
-
-
XPath improvements:
-
Improve performance of queries that evaluate or compare attribute values, like
@attr > 5 -
Improve performance of queries that select nodes and attributes by name
-
-
Bug fixes:
-
Fix stack overflow when removing subtrees with extremely deep nesting
-
Fix integer overflows that could lead to crashes when loading very large (1+ GB) documents on 32-bit platforms in
PUGIXML_WCHAR_MODE -
Fix null pointer dereference when copying
xpath_variable_setobjects that contain string variables with unassigned values
-
-
CMake improvements:
-
Apple frameworks built with
PUGIXML_BUILD_APPLE_FRAMEWORKnow include framework headers -
PUGIXML_INSTALL_SOURCEoption can be used to installpugixml.cpp(useful for header-only mode)
-
-
Compatibility improvements:
-
Add project files and NuGet packages for Visual Studio 2026
-
Fix compatibility with C++20 modules when including
pugixml.hppin the global module fragment -
Fix clang/gcc warnings
-Wextra-semi-stmt,-Wsign-conversion,-Wuninitialized(GCC16) -
Fix compilation for Embarcadero C++ XE5
-
Work around several static analysis false positives
-
v1.15 2025-01-10
Maintenance release. Changes:
-
Improvements:
- Many
xml_attribute::andxml_node::functions now transparently supportstd::string_viewandstd::stringwhen C++17 support is detected.
- Many
-
CMake improvements:
-
Improve
pkg-configfile generation for NixOS -
PUGIXML_BUILD_APPLE_FRAMEWORKCMake option can be used to build pugixml as.xcframework -
PUGIXML_INSTALLCMake option can be used to disable installation targets
-
-
Compatibility improvements:
-
Fix clang/gcc warnings
-Wzero-as-null-pointer-constant,-Wuseless-cast,-Wshorten-64-to-32 -
Fix unreferenced function warnings in
PUGIXML_NO_STLconfiguration -
Fix CMake 3.31 deprecation warnings
-
Stop using deprecated
throw()whennoexceptis available
-
v1.14 2023-10-01
Maintenance release. Changes:
-
Improvements:
-
xml_attribute::set_nameandxml_node::set_namenow have overloads that accept pointer to non-null-terminated string and size -
Implement
parse_merge_pcdataparsing mode in which PCDATA contents is merged into a single node when original document had comments that were skipped during parsing -
xml_document::load_filenow returns a more consistent error status when given a path to a folder
-
-
Bug fixes:
-
Fix assertion in XPath number→string conversion when using non-English locales
-
Fix PUGIXML_STATIC_CRT CMake option to correctly select static CRT when using MSVC and recent CMake
-
-
Compatibility improvements:
-
Fix GCC 2.95/3.3 builds
-
Fix CMake 3.27 deprecation warnings
-
Fix XCode 14 sprintf deprecation warning when compiling in C++03 mode
-
Fix clang/gcc warnings
-Wweak-vtables,-Wreserved-macro-identifier
-
v1.13 2022-11-01
Maintenance release. Changes:
-
Improvements:
-
xml_attribute::set_value,xml_node::set_valueandxml_text::setnow have overloads that accept pointer to non-null-terminated string and size -
Improve performance of tree traversal when using compact mode (
PUGIXML_COMPACT)
-
-
Bug fixes:
-
Fix error handling in
xml_document::save_filethat could result in the function succeeding while running out of disk space -
Fix memory leak during error handling of some out-of-memory conditions during
xml_document::load
-
-
Compatibility improvements:
-
Fix exported symbols in CMake DLL builds when using CMake
-
Fix exported symbols in CMake shared object builds when using -fvisibility=hidden
-
v1.12 2022-02-09
Maintenance release. Changes:
-
Bug fixes:
-
Fix a bug in xml_document move construction when the source of the move is empty
-
Fix const-correctness issues with iterator objects to support C++20 ranges
-
-
XPath improvements:
- Improved detection of overly complex queries that may result in stack overflow during parsing
-
Compatibility improvements:
-
Fix Cygwin support for DLL builds
-
Fix Windows CE support
-
Add NuGet builds and project files for VS2022
-
-
Build system changes
-
All CMake options now have the prefix
PUGIXML_. This may require changing dependent build configurations. -
Many build settings are now exposed via CMake settings, most notably
PUGIXML_COMPACTandPUGIXML_WCHAR_MODEcan be set without changingpugiconfig.hpp
-
v1.11 2020-11-26
Maintenance release. Changes:
-
New features:
-
Add xml_node::remove_attributes and xml_node::remove_children
-
Add a way to customize floating point precision via xml_attribute::set and xml_text::set overloads
-
-
XPath improvements:
- XPath parser now limits recursion depth which prevents stack overflow on malicious queries
-
Compatibility improvements:
-
Fix Visual Studio warnings when built using clang-cl compiler
-
Fix Wconversion warnings in gcc
-
Fix Wzero-as-null-pointer-constant warnings in pugixml.hpp
-
Work around several static analysis false positives
-
-
Build system changes
- The CMake package for pugixml now provides a
pugixml::pugixmltarget rather than apugixmltarget. A compatibilitypugixmltarget is provided if at least version 1.11 is not requested.
- The CMake package for pugixml now provides a
v1.10 2019-09-15
Maintenance release. Changes:
-
Behavior changes:
-
Tab characters (ASCII 9) in attribute values are now encoded as '	' to survive roundtripping
-
>characters are no longer escaped in attribute values
-
-
New features:
-
Add Visual Studio .natvis files to improve debugging experience
-
CMake improvements (USE_POSTFIX and BUILD_SHARED_AND_STATIC_LIBS options for building multiple versions and pkg-config tweaks)
-
Add format_skip_control_chars formatting flag to skip non-printable ASCII characters that are invalid to use in well-formed XML files
-
Add format_attribute_single_quote formatting flag to use single quotes for attribute values instead of default double quotes.
-
-
XPath improvements:
-
XPath union now results in a stable order that doesn’t depend on memory allocations; crucially, this may require sorting the output of XPath query operation if you rely on the document-ordered traversal
-
Improve performance of XPath union operation, making it ~2x faster
-
-
Compatibility improvements:
-
Fix Visual Studio warnings when built in a DLL configuration
-
Fix static analysis false positives in Coverity and clang
-
Fix Wdouble-promotion warnings in gcc
-
Add Visual Studio 2019 support for NuGet packages
-
v1.9 2018-04-04
Maintenance release. Changes:
-
Specification changes:
-
xml_document::load(const char*)(deprecated in 1.5) now hasdeprecatedattribute; usexml_document::load_stringinstead -
xml_node::select_single_node(deprecated in 1.5) now hasdeprecatedattribute; usexml_node::select_nodeinstead
-
-
New features:
-
Add move semantics support for xml_document and improve move semantics support for other objects
-
CMake build now exports include directories
-
CMake build with BUILD_SHARED_LIBS=ON now uses dllexport attribute for MSVC
-
-
XPath improvements:
-
Rework parser/evaluator to not rely on exceptional control flow; longjmp is no longer used when exceptions are disabled
-
Improve error messages for certain invalid expressions such as
.[1]or(1 -
Minor performance improvements
-
-
Compatibility improvements:
-
Fix Texas Instruments compiler warnings
-
Fix compilation issues with limits.h for some versions of gcc
-
Fix compilation issues with Clang/C2
-
Fix implicit fallthrough warnings in gcc 7
-
Fix unknown attribute directive warnings in gcc 8
-
Fix cray++ compiler errors
-
Fix unsigned integer overflow errors with -fsanitize=integer
-
Fix undefined behavior sanitizer issues in compact mode
-
v1.8 2016-11-24
Maintenance release. Changes:
-
Specification changes:
- When printing empty elements, a space is no longer added before / in format_raw mode
-
New features:
-
Added parse_embed_pcdata parsing mode in which PCDATA value is stored in the element node if possible (significantly reducing memory consumption for some documents)
-
Added auto-detection support for Latin-1 (ISO-8859-1) encoding during parsing
-
Added format_no_empty_element_tags formatting flag that outputs start/end tags instead of empty element tags for empty elements
-
-
Performance improvements:
- Minor memory allocation improvements (yielding up to 1% memory savings in some cases)
-
Compatibility improvements:
-
Fixed compilation issues for Borland C++ 5.4
-
Fixed compilation issues for some distributions of MinGW 3.8
-
Fixed various Clang/GCC warnings
-
Enabled move semantics support for XPath objects for MSVC 2010 and above
-
v1.7 2015-10-19
Major release, featuring performance and memory improvements along with some new features. Changes:
-
Compact mode:
-
Introduced a new tree storage mode that takes significantly less memory (2-5x smaller DOM) at some performance cost.
-
The mode can be enabled using
PUGIXML_COMPACTdefine.
-
-
New integer parsing/formatting implementation:
-
Functions that convert from and to integers (e.g.
as_int/set_value) do not rely on CRT any more. -
New implementation is 3-5x faster and is always correct wrt overflow or underflow. This is a behavior change - where previously
as_uint()would return UINT_MAX on a value "-1", it now returns 0.
-
-
New features:
-
XPath objects (
xpath_query,xpath_node_set,xpath_variable_set) are now movable if your compiler supports C++11. Additionally,xpath_variable_setis copyable. -
Added
format_indent_attributesthat makes the resulting XML friendlier to line diff/merge tools. -
Added a variant of
xml_node::attributefunction with a hint that can improve lookup performance. -
Custom allocation functions are now allowed (but not required) to throw instead of returning a null pointer.
-
-
Bug fixes:
-
Fix Clang 3.7 crashes in out-of-memory cases (C++ DR 1748)
-
Fix XPath crashes on SPARC64 (and other 32-bit architectures where doubles have to be aligned to 8 bytes)
-
Fix xpath_node_set assignment to provide strong exception guarantee
-
Fix saving for custom xml_writer implementations that can throw from write()
-
v1.6 2015-04-10
Maintenance release. Changes:
-
Specification changes:
-
Attribute/text values now use more digits when printing floating point numbers to guarantee round-tripping.
-
Text nodes no longer get extra surrounding whitespace when pretty-printing nodes with mixed contents
-
-
Bug fixes:
-
Fixed translate and normalize-space XPath functions to no longer return internal NUL characters
-
Fixed buffer overrun on malformed comments inside DOCTYPE sections
-
DOCTYPE parsing can no longer run out of stack space on malformed inputs (XML parsing is now using bounded stack space)
-
Adjusted processing instruction output to avoid malformed documents if the PI value contains
?>
-
v1.5 2014-11-27
Major release, featuring a lot of performance improvements and some new features.
-
Specification changes:
-
xml_document::load(const char_t*)was renamed toload_string; the old method is still available and will be deprecated in a future release -
xml_node::select_single_nodewas renamed toselect_node; the old method is still available and will be deprecated in a future release.
-
-
New features:
-
Added
xml_node::append_moveand other functions for moving nodes within a document -
Added
xpath_query::evaluate_nodefor evaluating queries with a single node as a result
-
-
Performance improvements:
-
Optimized XML parsing (10-40% faster with clang/gcc, up to 10% faster with MSVC)
-
Optimized memory consumption when copying nodes in the same document (string contents is now shared)
-
Optimized node copying (10% faster for cross-document copies, 3x faster for inter-document copies; also it now consumes a constant amount of stack space)
-
Optimized node output (60% faster; also it now consumes a constant amount of stack space)
-
Optimized XPath allocation (query evaluation now results in fewer temporary allocations)
-
Optimized XPath sorting (node set sorting is 2-3x faster in some cases)
-
Optimized XPath evaluation (XPathMark suite is 100x faster; some commonly used queries are 3-4x faster)
-
-
Compatibility improvements:
-
Fixed
xml_node::offset_debugfor corner cases -
Fixed undefined behavior while calling memcpy in some cases
-
Fixed MSVC 2015 compilation warnings
-
Fixed
contrib/foreach.hppfor Boost 1.56.0
-
-
Bug fixes
-
Adjusted comment output to avoid malformed documents if the comment value contains
-- -
Fix XPath sorting for documents that were constructed using append_buffer
-
Fix
load_filefor wide-character paths with non-ASCII characters in MinGW with C++11 mode enabled
-
v1.4 2014-02-27
Major release, featuring various new features, bug fixes and compatibility improvements.
-
Specification changes:
- Documents without element nodes are now rejected with
status_no_document_elementerror, unlessparse_fragmentoption is used
- Documents without element nodes are now rejected with
-
New features:
-
Added XML fragment parsing (
parse_fragmentflag) -
Added PCDATA whitespace trimming (
parse_trim_pcdataflag) -
Added long long support for
xml_attributeandxml_text(as_llong,as_ullongandset_value/setoverloads) -
Added hexadecimal integer parsing support for
as_int/as_uint/as_llong/as_ullong -
Added
xml_node::append_bufferto improve performance of assembling documents from fragments -
xml_named_node_iteratoris now bidirectional -
Reduced XPath stack consumption during compilation and evaluation (useful for embedded systems)
-
-
Compatibility improvements:
-
Improved support for platforms without wchar_t support
-
Fixed several false positives in clang static analysis
-
Fixed several compilation warnings for various GCC versions
-
-
Bug fixes:
-
Fixed undefined pointer arithmetic in XPath implementation
-
Fixed non-seekable iostream support for certain stream types, i.e. Boost
file_sourcewith pipe input -
Fixed
xpath_query::return_typefor some expressions -
Fixed dllexport issues with
xml_named_node_iterator -
Fixed
find_child_by_attributeassertion for attributes with null name/value
-
v1.2 2012-05-01
Major release, featuring header-only mode, various interface enhancements (i.e. PCDATA manipulation and C++11 iteration), many other features and compatibility improvements.
-
New features:
-
Added
xml_texthelper class for working with PCDATA/CDATA contents of an element node -
Added optional header-only mode (controlled by
PUGIXML_HEADER_ONLYdefine) -
Added
xml_node::children()andxml_node::attributes()for C++11 ranged for loop orBOOST_FOREACH -
Added support for Latin-1 (ISO-8859-1) encoding conversion during loading and saving
-
Added custom default values for
xml_attribute::as_*(they are returned if the attribute does not exist) -
Added
parse_ws_pcdata_singleflag for preserving whitespace-only PCDATA in case it’s the only child -
Added
format_save_file_textforxml_document::save_fileto open files as text instead of binary (changes newlines on Windows) -
Added
format_no_escapesflag to disable special symbol escaping (complements~parse_escapes) -
Added support for loading document from streams that do not support seeking
-
Added
PUGIXML_MEMORY_*constants for tweaking allocation behavior (useful for embedded systems) -
Added
PUGIXML_VERSIONpreprocessor define
-
-
Compatibility improvements:
-
Parser does not require setjmp support (improves compatibility with some embedded platforms, enables
/clr:purecompilation) -
STL forward declarations are no longer used (fixes SunCC/RWSTL compilation, fixes clang compilation in C++11 mode)
-
Fixed AirPlay SDK, Android, Windows Mobile (WinCE) and C++/CLI compilation
-
Fixed several compilation warnings for various GCC versions, Intel C++ compiler and Clang
-
-
Bug fixes:
-
Fixed unsafe bool conversion to avoid problems on C++/CLI
-
Iterator dereference operator is const now (fixes Boost
filter_iteratorsupport) -
xml_document::save_filenow checks for file I/O errors during saving
-
v1.0 2010-11-01
Major release, featuring many XPath enhancements, wide character filename support, miscellaneous performance improvements, bug fixes and more.
-
XPath:
-
XPath implementation is moved to
pugixml.cpp(which is the only source file now); usePUGIXML_NO_XPATHif you want to disable XPath to reduce code size -
XPath is now supported without exceptions (
PUGIXML_NO_EXCEPTIONS); the error handling mechanism depends on the presence of exception support -
XPath is now supported without STL (
PUGIXML_NO_STL) -
Introduced variable support
-
Introduced new
xpath_query::evaluate_string, which works without STL -
Introduced new
xpath_node_setconstructor (from an iterator range) -
Evaluation function now accept attribute context nodes
-
All internal allocations use custom allocation functions
-
Improved error reporting; now a last parsed offset is returned together with the parsing error
-
-
Bug fixes:
-
Fixed memory leak for loading from streams with stream exceptions turned on
-
Fixed custom deallocation function calling with null pointer in one case
-
Fixed missing attributes for iterator category functions; all functions/classes can now be DLL-exported
-
Worked around Digital Mars compiler bug, which lead to minor read overfetches in several functions
-
load_filenow works with 2+ Gb files in MSVC/MinGW -
XPath: fixed memory leaks for incorrect queries
-
XPath: fixed
xpath_node()attribute constructor with empty attribute argument -
XPath: fixed
lang()function for non-ASCII arguments
-
-
Specification changes:
-
CDATA nodes containing
]]>are printed as several nodes; while this changes the internal structure, this is the only way to escape CDATA contents -
Memory allocation errors during parsing now preserve last parsed offset (to give an idea about parsing progress)
-
If an element node has the only child, and it is of CDATA type, then the extra indentation is omitted (previously this behavior only held for PCDATA children)
-
-
Additional functionality:
-
Added
xml_parse_resultdefault constructor -
Added
xml_document::load_fileandxml_document::save_filewith wide character paths -
Added
as_utf8andas_wideoverloads forstd::wstring/std::stringarguments -
Added DOCTYPE node type (
node_doctype) and a special parse flag,parse_doctype, to add such nodes to the document during parsing -
Added
parse_fullparse flag mask, which extendsparse_defaultwith all node type parsing flags exceptparse_ws_pcdata -
Added
xml_node::hash_value()andxml_attribute::hash_value()functions for use in hash-based containers -
Added
internal_object()and additional constructor for bothxml_nodeandxml_attributefor easier marshalling (useful for language bindings) -
Added
xml_document::document_element()function -
Added
xml_node::prepend_attribute,xml_node::prepend_childandxml_node::prepend_copyfunctions -
Added
xml_node::append_child,xml_node::prepend_child,xml_node::insert_child_beforeandxml_node::insert_child_afteroverloads for element nodes (with name instead of type) -
Added
xml_document::reset()function
-
-
Performance improvements:
-
xml_node::root()andxml_node::offset_debug()are now O(1) instead of O(logN) -
Minor parsing optimizations
-
Minor memory optimization for strings in DOM tree (
set_name/set_value) -
Memory optimization for string memory reclaiming in DOM tree (
set_name/set_valuenow reallocate the buffer if memory waste is too big) -
XPath: optimized document order sorting
-
XPath: optimized child/attribute axis step
-
XPath: optimized number-to-string conversions in MSVC
-
XPath: optimized concat for many arguments
-
XPath: optimized evaluation allocation mechanism: constant and document strings are not heap-allocated
-
XPath: optimized evaluation allocation mechanism: all temporaries' allocations use fast stack-like allocator
-
-
Compatibility:
-
Removed wildcard functions (
xml_node::child_w,xml_node::attribute_w, etc.) -
Removed
xml_node::all_elements_by_name -
Removed
xpath_type_tenumeration; usexpath_value_typeinstead -
Removed
format_write_bom_utf8enumeration; useformat_write_bominstead -
Removed
xml_document::precompute_document_order,xml_attribute::document_orderandxml_node::document_orderfunctions; document order sort optimization is now automatic -
Removed
xml_document::parsefunctions andtransfer_ownershipstruct; usexml_document::load_buffer_inplaceandxml_document::load_buffer_inplace_owninstead -
Removed
as_utf16function; useas_wideinstead
-
v0.9 2010-07-01
Major release, featuring extended and improved Unicode support, miscellaneous performance improvements, bug fixes and more.
-
Major Unicode improvements:
-
Introduced encoding support (automatic/manual encoding detection on load, manual encoding selection on save, conversion from/to UTF8, UTF16 LE/BE, UTF32 LE/BE)
-
Introduced
wchar_tmode (you can setPUGIXML_WCHAR_MODEdefine to switch pugixml internal encoding from UTF8 towchar_t; all functions are switched to their Unicode variants) -
Load/save functions now support wide streams
-
-
Bug fixes:
-
Fixed document corruption on failed parsing bug
-
XPath string/number conversion improvements (increased precision, fixed crash for huge numbers)
-
Improved DOCTYPE parsing: now parser recognizes all well-formed DOCTYPE declarations
-
Fixed
xml_attribute::as_uint()for large numbers (i.e. 232-1) -
Fixed
xml_node::first_element_by_pathfor path components that are prefixes of node names, but are not exactly equal to them.
-
-
Specification changes:
-
parse()API changed toload_buffer/load_buffer_inplace/load_buffer_inplace_own;load_bufferAPIs do not require zero-terminated strings. -
Renamed
as_utf16toas_wide -
Changed
xml_node::offset_debugreturn type andxml_parse_result::offsettype toptrdiff_t -
Nodes/attributes with empty names are now printed as
:anonymous
-
-
Performance improvements:
-
Optimized document parsing and saving
-
Changed internal memory management: internal allocator is used for both metadata and name/value data; allocated pages are deleted if all allocations from them are deleted
-
Optimized memory consumption:
sizeof(xml_node_struct)reduced from 40 bytes to 32 bytes on x86 -
Optimized debug mode parsing/saving by order of magnitude
-
-
Miscellaneous:
-
All STL includes except
<exception>inpugixml.hppare replaced with forward declarations -
xml_node::remove_childandxml_node::remove_attributenow return the operation result
-
-
Compatibility:
-
parse()andas_utf16are left for compatibility (these functions are deprecated and will be removed in version 1.0) -
Wildcard functions,
document_order/precompute_document_orderfunctions,all_elements_by_namefunction andformat_write_bom_utf8flag are deprecated and will be removed in version 1.0 -
xpath_type_tenumeration was renamed toxpath_value_type;xpath_type_tis deprecated and will be removed in version 1.0
-
v0.5 2009-11-08
Major bugfix release. Changes:
-
XPath bugfixes:
-
Fixed
translate(),lang()andconcat()functions (infinite loops/crashes) -
Fixed compilation of queries with empty literal strings (
"") -
Fixed axis tests: they never add empty nodes/attributes to the resulting node set now
-
Fixed string-value evaluation for node-set (the result excluded some text descendants)
-
Fixed
self::axis (it behaved likeancestor-or-self::) -
Fixed
following::andpreceding::axes (they included descendent and ancestor nodes, respectively) -
Minor fix for
namespace-uri()function (namespace declaration scope includes the parent element of namespace declaration attribute) -
Some incorrect queries are no longer parsed now (i.e.
foo: *) -
Fixed
text()/etc. node test parsing bug (i.e.foo[text()]failed to compile) -
Fixed root step (
/) - it now selects empty node set if query is evaluated on empty node -
Fixed string to number conversion (
"123 "converted to NaN,"123 .456"converted to 123.456 - now the results are 123 and NaN, respectively) -
Node set copying now preserves sorted type; leads to better performance on some queries
-
-
Miscellaneous bugfixes:
-
Fixed
xml_node::offset_debugfor PI nodes -
Added empty attribute checks to
xml_node::remove_attribute -
Fixed
node_piandnode_declarationcopying -
Const-correctness fixes
-
-
Specification changes:
-
xpath_node::select_nodes()and related functions now throw exception if expression return type is not node set (instead of assertion) -
xml_node::traverse()now sets depth to -1 for bothbegin()andend()callbacks (was 0 atbegin()and -1 atend()) -
In case of non-raw node printing a newline is output after PCDATA inside nodes if the PCDATA has siblings
-
UTF8 →
wchar_tconversion now considers 5-byte UTF8-like sequences as invalid
-
-
New features:
-
Added
xpath_node_set::operator[]for index-based iteration -
Added
xpath_query::return_type() -
Added getter accessors for memory-management functions
-
v0.42 2009-09-17
Maintenance release. Changes:
-
Bug fixes:
-
Fixed deallocation in case of custom allocation functions or if
delete[]/freeare incompatible -
XPath parser fixed for incorrect queries (i.e. incorrect XPath queries should now always fail to compile)
-
Const-correctness fixes for
find_child_by_attribute -
Improved compatibility (miscellaneous warning fixes, fixed
<cstring>include dependency for GCC) -
Fixed iterator begin/end and print function to work correctly for empty nodes
-
-
New features:
-
Added
PUGIXML_API/PUGIXML_CLASS/PUGIXML_FUNCTIONconfiguration macros to control class/function attributes -
Added
xml_attribute::set_valueoverloads for different types
-
v0.41 2009-02-08
Maintenance release. Changes:
-
Bug fixes:
- Fixed bug with node printing (occasionally some content was not written to output stream)
v0.4 2009-01-18
Changes:
-
Bug fixes:
-
Documentation fix in samples for
parse()with manual lifetime control -
Fixed document order sorting in XPath (it caused wrong order of nodes after
xpath_node_set::sortand wrong results of some XPath queries)
-
-
Node printing changes:
-
Single quotes are no longer escaped when printing nodes
-
Symbols in second half of ASCII table are no longer escaped when printing nodes; because of this,
format_utf8flag is deleted as it’s no longer needed andformat_write_bomis renamed toformat_write_bom_utf8. -
Reworked node printing - now it works via
xml_writerinterface; implementations forFILE*andstd::ostreamare available. As a side-effect,xml_document::save_filenow works without STL.
-
-
New features:
-
Added unsigned integer support for attributes (
xml_attribute::as_uint,xml_attribute::operator=) -
Now document declaration (
<?xml …?>) is parsed as node with typenode_declarationwhenparse_declarationflag is specified (access to encoding/version is performed as if they were attributes, i.e.doc.child("xml").attribute("version").as_float()); corresponding flags for node printing were also added -
Added support for custom memory management (see
set_memory_management_functionsfor details) -
Implemented node/attribute copying (see
xml_node::insert_copy_*andxml_node::append_copyfor details) -
Added
find_child_by_attributeandfind_child_by_attribute_wto simplify parsing code in some cases (i.e. COLLADA files) -
Added file offset information querying for debugging purposes (now you’re able to determine exact location of any
xml_nodein parsed file, seexml_node::offset_debugfor details) -
Improved error handling for parsing - now
load(),load_file()andparse()returnxml_parse_result, which contains error code and last parsed offset; this does not break old interface asxml_parse_resultcan be implicitly casted tobool.
-
v0.34 2007-10-31
Maintenance release. Changes:
-
Bug fixes:
-
Fixed bug with loading from text-mode iostreams
-
Fixed leak when
transfer_ownershipis true and parsing is failing -
Fixed bug in saving (
\rand\nare now escaped in attribute values) -
Renamed
free()todestroy()- some macro conflicts were reported
-
-
New features:
-
Improved compatibility (supported Digital Mars C++, MSVC 6, CodeWarrior 8, PGI C++, Comeau, supported PS3 and XBox360)
-
PUGIXML_NO_EXCEPTIONflag for platforms without exception handling
-
v0.3 2007-02-21
Refactored, reworked and improved version. Changes:
-
Interface:
-
Added XPath
-
Added tree modification functions
-
Added no STL compilation mode
-
Added saving document to file
-
Refactored parsing flags
-
Removed
xml_parserclass in favor ofxml_document -
Added transfer ownership parsing mode
-
Modified the way
xml_tree_walkerworks -
Iterators are now non-constant
-
-
Implementation:
-
Support of several compilers and platforms
-
Refactored and sped up parsing core
-
Improved standard compliancy
-
Added XPath implementation
-
Fixed several bugs
-
v0.2 2006-11-06
First public release. Changes:
-
Bug fixes:
-
Fixed
child_value()(for empty nodes) -
Fixed
xml_parser_implwarning at W4
-
-
New features:
-
Introduced
child_value(name)andchild_value_w(name) -
parse_eol_pcdataandparse_eol_attributeflags +parse_minimaloptimizations -
Optimizations of
strconv_t
-