Travailler avec XML en C++ : bibliothèques, analyse et création de documents XML

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec XML en C++ : aperçu des bibliothèques pour l'analyse et la création de documents XML



XML (Extensible Markup Language) reste un format populaire pour le stockage et la transmission de données structurées, en particulier dans les fichiers de configuration, les services web (SOAP, XML-RPC) et l'échange de données entre systèmes. C++ ne dispose pas de support XML intégré (à l'exception de MSXML, qui est obsolète), c'est pourquoi les développeurs se tournent vers des bibliothèques tierces. Dans cet article, nous examinerons les trois bibliothèques les plus populaires et légères pour travailler avec XML en C++ : TinyXML-2, PugiXML et RapidXML. Vous apprendrez comment installer chacune d'elles, comment analyser et créer des documents XML, et nous comparerons leurs performances et leur facilité d'utilisation.



1. TinyXML-2



TinyXML-2 est une bibliothèque simple et minimaliste composée de seulement deux fichiers (tinyxml2.h et tinyxml2.cpp). Elle est idéale pour les petits projets où une haute performance n'est pas requise, mais où la simplicité d'intégration est importante. La bibliothèque est sous licence Zlib, ce qui permet de l'utiliser librement dans des projets commerciaux.



Installation

Copiez les fichiers tinyxml2.h et tinyxml2.cpp depuis le dépôt officiel dans votre projet et incluez-les. Aucune dépendance supplémentaire n'est requise.



Exemple : lecture XML

#include "tinyxml2.h"#include <iostream>

int main() { tinyxml2::XMLDocument doc; doc.LoadFile("config.xml");

tinyxml2::XMLElement* root = doc.RootElement(); if (root) { const char* value = root->FirstChildElement("setting")->GetText(); std::cout << "Setting: " << value << std::endl; } return 0;}


Exemple : création XML

#include "tinyxml2.h"

int main() { tinyxml2::XMLDocument doc; tinyxml2::XMLDeclaration* decl = doc.NewDeclaration(); doc.InsertFirstChild(decl);

tinyxml2::XMLElement* root = doc.NewElement("root"); root->SetAttribute("version", "1.0"); doc.InsertEndChild(root);

tinyxml2::XMLElement* child = doc.NewElement("item"); child->SetText("Hello, XML!"); root->InsertEndChild(child);

doc.SaveFile("output.xml"); return 0;}


2. PugiXML



PugiXML est une bibliothèque plus rapide et plus fonctionnelle que TinyXML-2. Elle prend en charge XPath, le travail avec les encodages UTF-8/16 et dispose d'une API pratique. PugiXML est souvent utilisée dans les projets où un équilibre entre vitesse et commodité est nécessaire. Elle est distribuée sous licence MIT.



Installation

Téléchargez les sources depuis GitHub et ajoutez pugixml.cpp et pugixml.hpp à votre projet. Pour utiliser XPath, ajoutez PUGIXML_HAS_XPATH dans les définitions du préprocesseur.



Exemple : lecture XML avec XPath

#include "pugixml.hpp"#include <iostream>

int main() { pugi::xml_document doc; doc.load_file("data.xml");

pugi::xpath_node result = doc.select_node("//item[@id='1']"); if (result) { std::cout << "Found: " << result.node().child_value() << std::endl; } return 0;}


Exemple : création XML

#include "pugixml.hpp"

int main() { pugi::xml_document doc; pugi::xml_node root = doc.append_child("configuration"); root.append_attribute("version") = "2.0";

pugi::xml_node param = root.append_child("param"); param.append_attribute("name") = "timeout"; param.text().set("30");

doc.save_file("config.xml"); return 0;}


3. RapidXML



RapidXML est la bibliothèque la plus rapide pour l'analyse XML en C++. Elle fonctionne in-place (modifie la source

Recommendations