C++:
Работа с XML

Как это сделать:

Вот простой способ разбора XML с помощью библиотеки TinyXML-2:

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

int main() {
    tinyxml2::XMLDocument doc;
    doc.Parse("<root><message>Привет, мир!</message></root>");
    const char* content = doc.FirstChildElement("root")->FirstChildElement("message")->GetText();
    std::cout << content << std::endl;
    return 0;
}

Пример вывода:

Привет, мир!

И вот как можно создать 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("Привет, мир!");
    root->InsertEndChild(message);
    doc.SaveFile("output.xml");
    return 0;
}

Это создаст XML файл output.xml со следующим содержимым:

<?xml version="1.0"?>
<root>
    <message>Привет, мир!</message>
</root>

Глубокое погружение

XML был ключевым в веб-сервисах и хранении данных с конца 90-х. Хотя сейчас для конфигурации и взаимодействия чаще используются JSON и YAML, XML все еще играет важную роль во многих корпоративных системах. Анализ XML в C++ может показаться старомодным из-за ручного разбора DOM/SAX. К счастью, библиотеки вроде TinyXML-2 упрощают этот процесс. C++ не имеет встроенной поддержки XML; библиотеки вроде TinyXML-2, pugixml или Xerces берут на себя сложные аспекты работы.

Смотрите также