pugixml

Light-weight, simple and fast XML parser for C++ with XPath support

MIT License

Stars
4K
Committers
78

Bot releases are visible (Hide)

pugixml - v1.14 Latest Release

Published by zeux about 1 year ago

Maintenance release.

Release highlights:

  • xml_attribute::set_name and xml_node::set_name now have overloads that accept pointer to non-null-terminated string and size
  • Implement parse_merge_pcdata parsing mode in which PCDATA contents is merged into a single node when original document had comments that were skipped during parsing
  • Fix PUGIXML_STATIC_CRT CMake option

Read full changelog

pugixml - v1.13

Published by zeux almost 2 years ago

Maintenance release.

Release highlights:

  • xml_attribute::set_value, xml_node::set_value and xml_text::set now have overloads that accept pointer to non-null-terminated string and size
  • Fix error handling in xml_document::save_file that 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

Read full changelog

pugixml - v1.12.1

Published by zeux over 2 years ago

Patch release.

This is identical to v1.12 except that it updates PUGIXML_VERSION macro to 1.12. It can be used in applications where PUGIXML_VERSION is needed, but this update is not critical otherwise.

pugixml - v1.12

Published by zeux over 2 years ago

Maintenance release.

Release highlights:

  • Fix xml_document move construction (for C++11) and xml_node iterator signatures (for C++20)
  • Add support for VS2022
  • Reorganize CMake settings to have PUGIXML_ prefix and allow more configuration via CMake options, like choosing compact/wchar_t modes.

Read full changelog

pugixml - v1.11.4

Published by zeux almost 4 years ago

Patch release.

This patch reintroduces pugixml target for CMake when find_package is used, which was accidentally removed from v1.11.
It's recommended that pugixml::pugixml target is used instead, but this patch restores pugixml target for existing applications / libraries that depend on it.

The previous patch, v1.11.3, did not handle repeated attempts to call find_package; this patch fixes that particular corner case.

pugixml - v1.11.3

Published by zeux almost 4 years ago

Patch release.

This patch reintroduces pugixml target for CMake when find_package is used, which was accidentally removed from v1.11.
It's recommended that pugixml::pugixml target is used instead, but this patch restores pugixml target for existing applications / libraries that depend on it.

The previous patch, v1.11.2, was not compatible with CMake 3.10; this patch restores compatibility with earlier CMake versions when using imported targets.

pugixml - v1.11.2

Published by zeux almost 4 years ago

Patch release.

This patch reintroduces pugixml target for CMake when find_package is used, which was accidentally removed from v1.11.
It's recommended that pugixml::pugixml target is used instead, but this patch restores pugixml target for existing applications / libraries that depend on it.

The previous patch, v1.11.1, was only compatible with CMake 3.18 and up; this patch restores compatibility with earlier CMake versions when using imported targets.

pugixml - v1.11.1

Published by zeux almost 4 years ago

Patch release.

This patch reintroduces pugixml target for CMake when find_package is used, which was accidentally removed from v1.11.
It's recommended that pugixml::pugixml target is used instead, but this patch restores pugixml target for existing applications / libraries that depend on it.

pugixml - v1.11

Published by zeux almost 4 years ago

Maintenance release.

Release highlights:

  • 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 parser now limits recursion depth which prevents stack overflow on malicious queries
  • Exported CMake target name changed to pugixml::pugixml; see subsequent patch releases

Read full changelog

pugixml - v1.10

Published by zeux about 5 years ago

Maintenance release.

Release highlights:

  • XPath union operation now is ~2x faster to compute and results in a stable order that doesn't depend on pointer order
  • Add format_skip_control_chars formatting flag to skip non-printable ASCII characters
  • Add format_attribute_single_quote formatting flag to use single quotes for attribute values
  • Add Visual Studio .natvis files to improve debugging experience

Read full changelog

pugixml - v1.9

Published by zeux over 6 years ago

Maintenance release.

Release highlights:

  • Added move semantics support for xml_document
  • XPath parser no longer relies on exceptional control flow/longjmp in absence of exceptions
    • xpath_exception is still used to communicate errors when exceptions are enabled
  • Fix compilation issues for some custom GCC installations
  • Fix compilation warnings for GCC 7.3/8

Read full changelog

pugixml - v1.8.1

Published by zeux almost 8 years ago

This is a re-release of v1.8 with fixed timestamps for files in .tar.gz

pugixml - v1.8

Published by zeux almost 8 years ago

Maintenance release.

Release highlights:

  • Added parse_embed_pcdata parsing mode to reduce memory consumption for some documents
  • Added Latin-1 auto-detection support
  • When printing empty elements, a space is no longer added before / in format_raw mode
  • Fix compilation issues for Borland C++ 5.4 and some distributions of MinGW 3.8

Read full changelog

pugixml - v1.7

Published by zeux about 9 years ago

Major release, featuring performance and memory improvements along with some new features.

Release highlights:

  • Introduced a new compact tree storage mode that takes significantly less memory (2-5x smaller DOM) at some performance cost
  • New integer parsing/formatting implementation (3-5x faster at getting/setting integers)
  • Added format_indent_attributes that makes the resulting XML friendlier to line diff/merge tools
  • Fix Clang 3.7 crashes in out-of-memory cases (C++ DR 1748)

Read full changelog

pugixml -

Published by zeux over 9 years ago

Maintenance release focused on bug fixes.

Release highlights:

  • Fixed translate and normalize-space XPath functions to no longer return internal NUL characters
  • Fixed buffer overrun on malformed comments inside DOCTYPE sections
  • Attribute/text values now use more digits when printing floating point numbers to guarantee round-tripping.

Read full changelog

pugixml - v1.5

Published by zeux almost 10 years ago

Major release focused on performance improvements that also has some new features and compatibility improvements.

Release highlights:

  • Implemented efficient moving of nodes within the same document
  • Optimized parsing (10-40% faster with clang/GCC, 10% faster with MSVC)
  • Optimized node copying (stackless, shares string contents where possible, up to 3x faster overall)
  • Optimized node output (stackless, up to 60% faster)
  • Optimized XPath evaluation (XPathMark suite is 100x faster; some commonly used queries are 4x faster)

Read full changelog

pugixml - v0.5

Published by zeux over 10 years ago

pugixml - v0.9

Published by zeux over 10 years ago

pugixml - v1.0

Published by zeux over 10 years ago

Major release, featuring many XPath enhancements, wide character filename support, miscellaneous performance improvements, bug fixes and more.

pugixml - v1.2

Published by zeux over 10 years ago

Major release, featuring header-only mode, various interface enhancements (i.e. PCDATA manipulation and C++11 iteration), many other features and compatibility improvements.

Package Rankings
Top 5.64% on Proxy.golang.org
Top 6.73% on Conda-forge.org
Top 17.37% on Anaconda.org
Badges
Extracted from project README
Actions Status Build status codecov.io