Arbeit mit XML in C++: Überblick über Bibliotheken zum Parsen und Erstellen von XML-Dokumenten
XML (Extensible Markup Language) bleibt ein beliebtes Format zum Speichern und Übertragen strukturierter Daten, insbesondere in Konfigurationsdateien, Webdiensten (SOAP, XML-RPC) und beim Datenaustausch zwischen Systemen. C++ hat keine integrierte XML-Unterstützung (mit Ausnahme des veralteten MSXML), daher greifen Entwickler auf Drittanbieter-Bibliotheken zurück. In diesem Artikel betrachten wir die drei beliebtesten und leichtesten Bibliotheken für die Arbeit mit XML in C++: TinyXML-2, PugiXML und RapidXML. Sie erfahren, wie Sie jede davon installieren, XML-Dokumente parsen und erstellen, und wir vergleichen ihre Leistung und Benutzerfreundlichkeit.
1. TinyXML-2
TinyXML-2 ist eine einfache, minimalistische Bibliothek, die nur aus zwei Dateien besteht (tinyxml2.h und tinyxml2.cpp). Sie ist ideal für kleine Projekte, bei denen keine hohe Leistung erforderlich ist, aber eine einfache Integration wichtig ist. Die Bibliothek ist unter der Zlib-Lizenz lizenziert, was die freie Nutzung in kommerziellen Projekten ermöglicht.
Installation
Kopieren Sie die Dateien tinyxml2.h und tinyxml2.cpp aus dem offiziellen Repository in Ihr Projekt und binden Sie sie ein. Es sind keine zusätzlichen Abhängigkeiten erforderlich.
Beispiel: XML lesen
#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;}Beispiel: XML erstellen
#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 ist eine schnellere und funktionsreichere Bibliothek als TinyXML-2. Sie unterstützt XPath, die Arbeit mit UTF-8/16-Kodierungen und bietet eine benutzerfreundliche API. PugiXML wird häufig in Projekten verwendet, die ein Gleichgewicht zwischen Geschwindigkeit und Komfort erfordern. Sie wird unter der MIT-Lizenz vertrieben.
Installation
Laden Sie die Quelldateien von GitHub herunter und fügen Sie pugixml.cpp und pugixml.hpp zu Ihrem Projekt hinzu. Für die Nutzung von XPath fügen Sie PUGIXML_HAS_XPATH zu den Präprozessordefinitionen hinzu.
Beispiel: XML mit XPath lesen
#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;}Beispiel: XML erstellen
#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 ist die schnellste Bibliothek zum Parsen von XML in C++. Sie arbeitet in-place (ändert die Quelle
Auch in der Bibliothek
Konfiguration von JavaScript-Anwendungen (Node.js): Bibliotheken dotenv, convict, nconf
Datenvalidierung in C++: Bibliotheken, Methoden und Codebeispiele
Geolokalisierung und Karten in C# (.NET): Bibliotheken, Beispiele und Empfehlungen
CLI-Frameworks für PHP: Erstellung von Konsolenanwendungen mit Symfony Console und Laravel Zero
Rust PDF erstellen: Komplette Anleitung mit Beispielen