📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

121行目: 121行目:
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
<br>
==== サンプルコード ====
サンプルコードでは、以下に示すような手順を行っている。<br>
# まず、<code>XMLPlatformUtils::Initialize</code>メソッドを実行して、Xerces-C++ライブラリを初期化する。
# 次に、<code>XercesDOMParser</code>クラスのインスタンスを生成して、XMLドキュメントを解析する。
# <code>getDocument</code>メソッドを実行してDOMドキュメントを取得して、<code>getDocumentElement</code>メソッドを実行してルート要素を取得する。
# ルート要素の名前を出力する。
# <code>getChildNodes</code>メソッドを実行してルート要素の子要素のリストを取得する。(各子要素の名前を出力)
# <code>XMLPlatformUtils::Terminate</code>メソッドを実行して、Xerces-C++ライブラリを解放する。
<br>
以下の例で使用しているXMLファイルの内容を示す。
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <child1>
      <grandchild>Value1</grandchild>
    </child1>
    <child2 attr="value">
      <grandchild>Value2</grandchild>
    </child2>
    <child3/>
</root>
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
#include <iostream>
#include <string>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
using namespace xercesc;
int main(int argc, char* argv[])
{
    try {
      // Xerces-C++ライブラリの初期化
      XMLPlatformUtils::Initialize();
      // XMLドキュメントを解析するパーサーを作成
      XercesDOMParser parser;
      parser.setValidationScheme(XercesDOMParser::Val_Always); // オプションでXMLスキーマ検証を行う
      // XMLファイルを指定してパースする
      parser.parse("example.xml");
      // ルート要素を取得
      DOMDocument* document = parser.getDocument();
      DOMElement* rootElement = document->getDocumentElement();
      // ルート要素の名前を出力
      char* rootName = XMLString::transcode(rootElement->getTagName());
      std::cout << "Root element name: " << rootName << std::endl;
      XMLString::release(&rootName);
      // 子要素を取得して出力
      DOMNodeList* childNodes = rootElement->getChildNodes();
      for (XMLSize_t i = 0; i < childNodes->getLength(); i++) {
          DOMNode* childNode = childNodes->item(i);
          if (childNode->getNodeType() == DOMNode::ELEMENT_NODE) {
            DOMElement* childElement = static_cast<DOMElement*>(childNode);
            char* childName = XMLString::transcode(childElement->getTagName());
            std::cout << "Child element name: " << childName << std::endl;
            XMLString::release(&childName);
          }
      }
      // Xerces-C++ライブラリの終了処理
      XMLPlatformUtils::Terminate();
    }
    catch (const XMLException& e) {
      char* message = XMLString::transcode(e.getMessage());
      std::cout << "Error: " << message << std::endl;
      XMLString::release(&message);
    }
    catch (const DOMException& e) {
      char* message = XMLString::transcode(e.msg);
      std::cout << "Error: " << message << std::endl;
      XMLString::release(&message);
    }
    catch (...) {
      std::cout << "Unexpected error occurred" << std::endl;
    }
    return 0;
}
</syntaxhighlight>
<br><br>
<br><br>