16. Juni, nach fast anderthalb Jahren Entwicklung, wurde Version 1.16 veröffentlicht. pugixml â eine schnelle plattformĂŒbergreifende Bibliothek zum Parsen und Verarbeiten von XML (MIT-Lizenz).
Die Bibliothek bietet eine DOM-Ă€hnliche Schnittstelle mit Funktionen zum Durchlaufen von Dokumentknoten und deren Ănderung. Support fĂŒr XPath 1.0 und vollstĂ€ndige Unicode-UnterstĂŒtzung (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) und UCS-2) wird ebenfalls bereitgestellt, mit automatischer Kodierungsumwandlung.
Die Verwendung ohne die Standardbibliothek und C++-Ausnahmen sowie der Modus "nur Header-Dateien" wird unterstĂŒtzt.
Dies ist eine JubilĂ€umsausgabe â in diesem Jahr wird das Projekt 20 Jahre alt! Mehr ĂŒber die Entstehungsgeschichte und Entwicklung der Bibliothek kann auf pugixml.org, GitHub oder in der ersten Ausgabe der Nachricht nachgelesen werden.
- Ănderungen am Verhalten
- Elemente mit einem leeren Kind-Element PCDATA werden jetzt mit leeren Tags ausgegeben (es sei denn, der Parameter format_no_empty_element_tags wird verwendet).
- Verbesserungen
- Die Option PUGIXML_CHARCONV_FLOAT wurde hinzugefĂŒgt, um FlieĂkommazahlen mit <charconv> zu konvertieren; hierfĂŒr ist C++17 erforderlich, was die Umwandlungen von der Locale unabhĂ€ngig macht und die Leistung verbessern kann.
- Die Funktionen xml_node::ensure_child und xml_node::ensure_attribute wurden hinzugefĂŒgt, die ein Kind-Element oder Attribut mit dem angegebenen Namen zurĂŒckgeben, wobei es hinzugefĂŒgt wird, wenn es fehlt.
- Die Leistung beim Suchen von Knoten und Attributen nach Namen wurde verbessert.
- Das Laden von Dokumenten aus einem leeren Puffer fĂŒhrt nicht mehr zu Speicherzuweisungen.
- Verbesserungen bei XPath
- Die Leistung von Abfragen, bei denen Attribute ausgerechnet oder miteinander verglichen werden, z. B. @attr > 5, wurde verbessert.
- Die Leistung von Abfragen, die Knoten und Attribute nach Namen auswÀhlen, wurde verbessert.
- Fehlerbehebungen
- Ein StapelĂŒberlauf beim Entfernen von TeilbĂ€umen mit sehr tiefen Verschachtelungsebenen wurde behoben.
- Integer-ĂberlĂ€ufe, die beim Laden sehr groĂer (> 1 GB) Dokumente auf 32-Bit-Plattformen im PUGIXML_WCHAR_MODE zu AbstĂŒrzen fĂŒhren konnten, wurden behoben.
- Ein Nullzeiger-Dereferenzierungsfehler beim Kopieren von xpath_variable_set-Objekten mit String-Variablen ohne zugewiesene Werte wurde behoben.
- Verbesserungen der CMake-UnterstĂŒtzung
- Die UnterstĂŒtzung fĂŒr die Option PUGIXML_BUILD_APPLE_FRAMEWORK wurde verbessert.
- Die CMake-Option PUGIXML_INSTALL_SOURCE wurde hinzugefĂŒgt, um pugixml.cpp zu installieren (nĂŒtzlich im "Nur Header"-Modus).
- Verbesserungen der KompatibilitÀt
- Projektdateien und NuGet-Pakete fĂŒr Visual Studio 2026 hinzugefĂŒgt;
- KompatibilitĂ€tsproblem mit C++20-Modulen beim EinfĂŒgen der Datei pugixml.hpp in den Fragment eines globalen Moduls behoben;
- Clang- und GCC-Warnungen -Wextra-semi-stmt, -Wsign-conversion und -Wuninitialized (GCC 16) behoben;
- Compilerfehler mit Embarcadero C++ XE5 behoben;
- Mehrere falsch-positive Meldungen der statischen Analyse beseitigt.
Quelle: linux.org.ru




