pugixml - ネイティブXPATHサポートによる効率的なXMLパース
概要
この記事では、XMLデータを処理するためにpugixmlを使用する方法を説明します。この処理ライブラリを使用すると、DOMパーサーを使用してノードを読み取りおよび操作し、XPATH表記を使用してノードをクエリできます。
ビルド方法
ソースをビルドするには、https://github.com/zeux/pugixml/tags からリリースをダウンロードする必要があります。次に、Phoenix Contactから提供されるPLCnextツールチェーンを使用してソースをクロスコンパイルします。以下のコードスニペットは、クロスコンパイル用のcmakeスクリプトを示しています。
# 環境変数をニーズに合わせて設定してください cmake \ -G "Unix Makefiles" \ -D CMAKE_BUILD_TYPE=Release \ -D BUILD_TESTING=OFF \ -D BUILD_SHARED_LIBS=ON \ -D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \ -D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \ -D "CMAKE_TOOLCHAIN_FILE=${ARP_TOOLCHAIN_FILE}" \ -D "ARP_TOOLCHAIN_ROOT= ${ARP_TOOLCHAIN_ROOT}" \ -D BUILD_TESTS=OFF \ -S "${SOURCE_DIRECTORY}" \ -B "${BUILD_DIRECTORY}" cmake --build "${BUILD_DIRECTORY}" --target install
使用方法
まず、C++ ヘッダーとライブラリをプロジェクト環境に統合する必要があります。完了したら、pugixml処理を使用できます。
ドキュメントの読み込み
pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file("data.xml"); ...
与えられたノードからサブノードを巡回
DOMツリーを巡回し、ノードを操作することもできます。
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool"); // サブノードを巡回 for (pugi::xml_node tool: tools) { std::cout << " " << tool.name(); // 属性を取得 for (pugi::xml_attribute attr: tool.attributes()) { std::cout << " " << attr.name() << "=" << attr.value(); } }
XPATHの使用
XPATHを使用すると、ノードと属性に非常に簡単にアクセスできます。
// ノードにアクセス pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool"); pugi::xpath_node_set all_tools = doc.select_nodes("//Tool"); // 属性にアクセス auto docIdNode = doc.select_node("@ID"); auto docIdNode_One = doc.select_node("//Tool[@ID==1]");
XMLドキュメントの保存
XMLドキュメントを保存できます。
doc.save_file("new_data.xml");
詳細情報
pugixmlについてさらに情報を得たい場合は、以下のリンクを確認してください:
- GitHub: https://github.com/zeux/pugixml
- Webサイト: https://pugixml.org/
ライセンス
このライブラリはMITライセンスで公開されています。
産業技術
- 金属3Dプリントのサポート構造管理:エキスパートのヒントで後処理を効率化
- スイッチ付き回路:基本電気回路の実践ガイド
- 科学的記数法での乗算と除算:マスターする
- インダストリー4.0の洞察:Bosch.IOのベレナ・マユントケ氏へのQ&A - IoT、自動化、未来の工場
- CNCジュエリー加工の完全ガイド:マスターメイキング
- linq - モダンC++のための強力なリスト処理ライブラリ
- Renesas、内蔵EtherCAT搭載RX72M MCU発表 - 産業オートメーション向け
- C++ std::map完全ガイド:連想配列の実践的活用とコード例
- C言語のcalloc():ゼロ初期化メモリ割り当てと実践例
- C言語free()関数完全マスター:実践ガイドと例
- Python XML処理:相互運用可能なデータ管理ガイド