オープンソースライブラリrapidxmlによるXMLの読み書き

rapidxmlはXMLドキュメントを解析・修正するための軽量C++ライブラリです。メモリーが制約のある環境や解析性能を求められるアプリケーションに適した非常に高速で効率的なパーサーです。

以下に、rapidxmlを使用してXMLドキュメントを解析し、修正する例を示します。

#include "rapidxml.hpp"
#include "rapidxml_utils.hpp"
int main() {
// 从文件加载XML文档
rapidxml::file<> xmlFile("example.xml");
rapidxml::xml_document<> doc;
doc.parse<0>(xmlFile.data());
// 获取根节点
rapidxml::xml_node<>* root = doc.first_node();
// 遍历子节点
for (rapidxml::xml_node<>* node = root->first_node(); node; node = node->next_sibling()) {
// 输出节点名称
std::cout << "Node: " << node->name() << std::endl;
// 遍历节点属性
for (rapidxml::xml_attribute<>* attr = node->first_attribute(); attr; attr = attr->next_attribute()) {
// 输出属性名称和值
std::cout << "Attribute: " << attr->name() << " = " << attr->value() << std::endl;
}
// 输出节点内容
std::cout << "Value: " << node->value() << std::endl;
}
// 修改节点内容
rapidxml::xml_node<>* node = root->first_node("child");
if (node) {
node->value("Modified value");
}
// 添加新节点
rapidxml::xml_node<>* newNode = doc.allocate_node(rapidxml::node_element, "new_child", "New node value");
root->append_node(newNode);
// 保存修改后的XML文档到文件
std::ofstream file("modified.xml");
file << doc;
file.close();
return 0;
}

rapidxmlを用いて、XMLドキュメントの解析、ノード、属性、内容の走査、ノード内容の変更、及び新しいノードの追加、そして修正したXMLドキュメントをファイルに保存する方法を説明しました。rapidxmlの使用法や機能の詳細は、公式ドキュメントを参照してください。

bannerAds