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 спрощують складні частини.
Дивіться також
- Документація TinyXML-2: https://leethomason.github.io/tinyxml2/
- бібліотека pugixml: https://pugixml.org/
- Парсер Xerces-C++: https://xerces.apache.org/xerces-c/
- Специфікація XML від W3C: https://www.w3.org/XML/