Arbeit mit XML in C++: Bibliotheken, Parsing und Erstellung von XML-Dokumenten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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

Empfehlungen