16. juni, efter næsten halvandet års udvikling, blev version 1.16 udgivet pugixml — en hurtig, tværplatforms bibliotek til parsing og behandling af XML (MIT-licens).
Biblioteket giver et DOM-lignende interface med funktioner til at navigere i dokumentets noder og ændre dem. Det understøtter også XPath 1.0 og fuld understøttelse af Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) og UCS-2), med automatisk konvertering af kodninger.
Brug uden den standardbibliotek og C++ undtagelser understøttes, samt en "kun header" tilstand.
Dette er en jubilæumsudgave - i år fylder projektet 20 år! Læs mere om historien bag bibliotekets oprettelse og udvikling på pugixml.org, GitHub eller i den første udgave af nyhederne.
- Ændringer i adfærd
- elementer med en tom underordnet PCDATA-output vises nu med tomme tags (hvis parameteren format_no_empty_element_tags ikke bruges).
- Forbedringer
- tilføjet mulighed PUGIXML_CHARCONV_FLOAT til at konvertere flydende tal ved hjælp af ; dette kræver C++17, hvilket gør konverteringer uafhængige af lokalitet og kan forbedre ydeevnen;
- tilføjet funktionerne xml_node::ensure_child og xml_node::ensure_attribute, der returnerer et underordnet element eller attribut med det angivne navn, og tilføjer det, hvis det manglede;
- forbedret ydeevne ved søgning af noder og attributter efter navn;
- indlæsning af dokument fra en tom buffer fører ikke længere til hukommelsesallokering.
- Forbedringer af XPath
- forbedret ydeevne ved forespørgsler, der involverer beregning eller sammenligning af attributværdier, som f.eks. @attr > 5;
- forbedret ydeevne ved forespørgsler, der vælger noder og attributter efter navn.
- Fejlrettelser
- rettet en stakoverløb ved sletning af undertræer med meget dyb indlejring;
- rettet heltalsoverløb, der kunne føre til nedbrud ved indlæsning af meget store (> 1GB) dokumenter på 32-bit platforme i PUGIXML_WCHAR_MODE;
- rettet en fejl ved afdereferering af null pointer ved kopiering af xpath_variable_set objekter med strengevariabler uden tildelte værdier.
- Forbedringer af CMake-understøttelse
- forbedret understøttelse af PUGIXML_BUILD_APPLE_FRAMEWORK muligheder;
- tilføjet CMake mulighed PUGIXML_INSTALL_SOURCE til installation af pugixml.cpp (nyttigt ved arbejde i "kun header" tilstand).
- Forbedringer af kompatibilitet
- Projektfiler og NuGet-pakker til Visual Studio 2026 er tilføjet;
- Problemet med kompatibilitet med C++20-moduler ved inkludering af filen pugixml.hpp i globale modulfragmenter er løst;
- Advarsler fra Clang og GCC -Wextra-semi-stmt, -Wsign-conversion og -Wuninitialized (GCC 16) er rettet;
- Kompileringsfejlen med Embarcadero C++ XE5 er rettet;
- Flere falske positiver ved statisk analyse er blevet elimineret.
Kilde: linux.org.ru




