C++:
Att arbeta med XML

Hur man gör:

Här är ett enkelt sätt att tolka XML med hjälp av TinyXML-2-biblioteket:

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

int main() {
    tinyxml2::XMLDocument doc;
    doc.Parse("<root><message>Hej, världen!</message></root>");
    const char* innehåll = doc.FirstChildElement("root")->FirstChildElement("message")->GetText();
    std::cout << innehåll << std::endl;
    return 0;
}

Exempelutskrift:

Hej, världen!

Och så här skapar du en XML-fil:

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

int main() {
    tinyxml2::XMLDocument doc;
    auto* deklaration = doc.NewDeclaration();
    doc.InsertFirstChild(deklaration);
    auto* root = doc.NewElement("root");
    doc.InsertEndChild(root);
    auto* meddelande = doc.NewElement("message");
    meddelande->SetText("Hej, världen!");
    root->InsertEndChild(meddelande);
    doc.SaveFile("output.xml");
    return 0;
}

Detta genererar en XML-fil output.xml med innehållet:

<?xml version="1.0"?>
<root>
    <message>Hej, världen!</message>
</root>

Fördjupning

XML har varit avgörande för webbtjänster och datalagring sedan slutet av 90-talet. Medan JSON och YAML nu är mer vanliga för konfiguration och interoperabilitet, är XML fortfarande stort i många företagssystem. Att tolka XML i C++ kan kännas gammaldags med manuell DOM/SAX-tolkning. Lyckligtvis förenklar bibliotek som TinyXML-2 det. C++ har inget inbyggt XML-stöd; bibliotek som TinyXML-2, pugixml eller Xerces paketerar de svåra bitarna.

Se även