RapidXML是一个开源的C++ XML解析器库,用于快速解析和修改XML文档。以下是RapidXML的一些基本用法:
- 包含头文件:
#include "rapidxml.hpp" #include "rapidxml_print.hpp"
- 创建一个XML文档对象:
rapidxml::xml_document<> doc;
- 解析XML文档:
// 从文件中解析XML文档
std::ifstream file("example.xml");
std::vector buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator()) ;
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 = https://www.yisu.com/ask/child->value(); // 遍历子元素的属性 for (rapidxml::xml_attribute<>* attr = child->first_attribute(); attr; attr = attr->next_attribute()) { // 访问属性的名称和值 const char* attrName = attr->name(); const char* attrValue = https://www.yisu.com/ask/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的一些基本用法,可以根据具体需求进行进一步探索和使用。