C++:
Praca z XML

Jak to zrobić:

Oto prosty sposób na parsowanie XML za pomocą biblioteki TinyXML-2:

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

int main() {
    tinyxml2::XMLDocument doc;
    doc.Parse("<root><message>Witaj, świecie!</message></root>");
    const char* content = doc.FirstChildElement("root")->FirstChildElement("message")->GetText();
    std::cout << content << std::endl;
    return 0;
}

Przykładowe wyjście:

Witaj, świecie!

A tak tworzy się plik XML:

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

int main() {
    tinyxml2::XMLDocument doc;
    auto* declaration = doc.NewDeclaration();
    doc.InsertFirstChild(declaration);
    auto* root = doc.NewElement("root");
    doc.InsertEndChild(root);
    auto* message = doc.NewElement("message");
    message->SetText("Witaj, świecie!");
    root->InsertEndChild(message);
    doc.SaveFile("output.xml");
    return 0;
}

To generuje plik XML output.xml z zawartością:

<?xml version="1.0"?>
<root>
    <message>Witaj, świecie!</message>
</root>

Pogłębiona analiza

XML był kluczowy w usługach internetowych i przechowywaniu danych od końca lat ‘90. Chociaż obecnie częściej używa się JSON i YAML do konfiguracji i interop, XML nadal ma ogromne znaczenie w wielu systemach przedsiębiorstw. Parsowanie XML w C++ może wydawać się staromodne z ręcznym parsowaniem DOM/SAX. Na szczęście, biblioteki takie jak TinyXML-2 to upraszczają. C++ nie ma wbudowanego wsparcia dla XML; biblioteki takie jak TinyXML-2, pugixml czy Xerces ułatwiają trudne zadania.

Zobacz również