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ż
- Dokumentacja TinyXML-2: https://leethomason.github.io/tinyxml2/
- Biblioteka pugixml: https://pugixml.org/
- Parser Xerces-C++: https://xerces.apache.org/xerces-c/
- Specyfikacja XML W3C: https://www.w3.org/XML/