C++でrapidxmlを使用する方法
RapidXMLは高速にXML文書を読み書きできるオープンソースのC++ XMLパーサーライブラリです。以下はRapidXMLの基本的な使い方です。
- ヘッダファイルのインクルード:
#include "rapidxml.hpp"
#include "rapidxml_print.hpp"
- XMLドキュメントオブジェクトを作成する:
rapidxml::xml_document<> doc;
- XMLドキュメントをパースする
// 从文件中解析XML文档
std::ifstream file("example.xml");
std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
buffer.push_back('\0'); // 添加终止符
doc.parse<0>(&buffer[0]);
file.close();
- XML要素へのアクセス:
// 获取根元素
rapidxml::xml_node<>* root = doc.first_node();
// 遍历子元素
for (rapidxml::xml_node<>* child = root->first_node(); child; child = child->next_sibling()) {
// 访问子元素的名称和值
const char* name = child->name();
const char* value = child->value();
// 遍历子元素的属性
for (rapidxml::xml_attribute<>* attr = child->first_attribute(); attr; attr = attr->next_attribute()) {
// 访问属性的名称和值
const char* attrName = attr->name();
const char* attrValue = attr->value();
}
}
- XML要素の変更:
// 创建一个新元素
rapidxml::xml_node<>* newNode = doc.allocate_node(rapidxml::node_element, "newElement");
// 创建一个新属性
rapidxml::xml_attribute<>* newAttr = doc.allocate_attribute("newAttribute", "attrValue");
// 将新属性添加到新元素
newNode->append_attribute(newAttr);
// 将新元素添加到根元素
root->append_node(newNode);
- 変更後のXMLドキュメントを保存する:
// 创建一个输出流
std::ofstream outFile("output.xml");
// 使用rapidxml_print打印XML文档到输出流
outFile << doc;
// 关闭输出流
outFile.close();
以上は RapidXML の基本的な使い方の一部であり、具体的なニーズに応じてさらに探索や使用ができます。