📢 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> | ||