C++:
XMLの扱い方

方法:

ここに、TinyXML-2ライブラリを使用してXMLを解析する簡単な方法があります:

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

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

サンプル出力:

Hello, World!

そして、これが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("Hello, World!");
    root->InsertEndChild(message);
    doc.SaveFile("output.xml");
    return 0;
}

これにより、次の内容を持つXMLファイルoutput.xmlが生成されます:

<?xml version="1.0"?>
<root>
    <message>Hello, World!</message>
</root>

深掘り

XMLは90年代後半から、Webサービスやデータストレージにおいて重要な役割を果たしてきました。現在、JSONやYAMLが設定や相互運用性において一般的になっていますが、XMLは多くのエンタープライズシステムで依然として重要です。C++でのXML解析は、手動での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/
  • W3C XML仕様:https://www.w3.org/XML/