Le 16 juin, après presque un an et demi de développement, la version 1.16 a été publiée. pugixml — une bibliothèque multiplateforme rapide pour le parsing et le traitement de XML (licence MIT).
La bibliothèque fournit une interface semblable au DOM avec des capacités pour parcourir et modifier les nœuds du document. Elle supporte également XPath 1.0 et offre un support complet pour l'Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) et UCS-2), avec une conversion automatique des encodages.
Son utilisation est supportée sans la bibliothèque standard et sans exceptions C++, ainsi qu'en mode « uniquement des fichiers d'en-tête ».
C'est une version anniversaire — cette année, le projet fête ses 20 ans ! Vous pouvez lire plus sur l'histoire de la création et du développement de la bibliothèque sur pugixml.org, GitHub ou dans la première édition de l'actualité.
- Changements de comportement
- les éléments avec un élément enfant vide PCDATA sont maintenant sortis avec des balises vides (sauf si le paramètre format_no_empty_element_tags est utilisé).
- Améliorations
- ajouté l'option PUGIXML_CHARCONV_FLOAT pour convertir les nombres à virgule flottante en utilisant ; cela nécessite C++17, ce qui rend les conversions indépendantes de la locale et peut améliorer les performances;
- ajoutées les fonctions xml_node::ensure_child et xml_node::ensure_attribute, renvoyant un élément enfant ou un attribut avec le nom spécifié, l'ajoutant si elle était absente;
- amélioration des performances de recherche de nœuds et d'attributs par nom;
- le chargement d'un document à partir d'un tampon vide ne conduit plus à l'allocation de mémoire.
- Améliorations XPath
- amélioration des performances des requêtes où des calculs ou des comparaisons de valeurs d'attribut sont effectués, par exemple @attr > 5 ;
- amélioration des performances des requêtes sélectionnant des nœuds et des attributs par nom.
- Corrections de bogues
- correction d'un débordement de pile lors de la suppression de sous-arbres avec un niveau de profondeur très élevé ;
- corrections de débordements d'entiers qui pouvaient conduire à des échecs lors du chargement de très grands documents (> 1 Go) sur des plates-formes 32 bits en mode PUGIXML_WCHAR_MODE ;
- correction d'une erreur de déréférencement d'un pointeur nul lors de la copie d'objets xpath_variable_set avec des variables de chaîne sans valeurs attribuées.
- Améliorations du support CMake
- amélioration du support de l'option PUGIXML_BUILD_APPLE_FRAMEWORK ;
- ajout de l'option CMake PUGIXML_INSTALL_SOURCE pour l'installation de pugixml.cpp (utile lors de l'utilisation en mode « uniquement des en-têtes »).
- Améliorations de compatibilité
- Les fichiers du projet et les packages NuGet pour Visual Studio 2026 ont été ajoutés;
- Un problème de compatibilité avec les modules C++20 a été corrigé lors de l'inclusion du fichier pugixml.hpp dans le fragment de module global;
- Avertissements Clang et GCC corrigés : -Wextra-semi-stmt, -Wsign-conversion et -Wuninitialized (GCC 16);
- Une erreur de compilation avec Embarcadero C++ XE5 a été corrigée;
- Plusieurs faux positifs dans l'analyse statique ont été éliminés.
Source : linux.org.ru




