C++ xml解析库很多,比如tinyxml,cmarkup,rapidxml 等等。其实都挺好用的。可能效率不一样,
据说rapidxml 效率高很多,就用了一下。还有个rapidjson解析json的,也挺快的。
rapidxml的文档很少,就一个manual.html.,我得吐槽一下,是在是太简单了。我要解析一个数组,查了半天都没有。
最终找到一个parent方法回到父节点,奇葩的是manual.html 没有显示此方法。
file.xml:
<root>
<file>
<filepath>123</filepath>
</file>
<file>
<filepath>123</filepath>
</file>
<file>
<filepath>123</filepath>
</file>
</root>
解析代码:
rapidxml::file<> fdoc("file.xml");
std::cout<<fdoc.data()<<std::endl;
rapidxml::xml_document<> doc;
doc.parse<0>(fdoc.data());
std::cout<<doc.name()<<std::endl;
//! 获取根节点
rapidxml::xml_node<>* root = doc.first_node();
std::cout<<root->name()<<std::endl;
//! 获取根节点第一个节点
rapidxml::xml_node<>* node;
for(node = root->first_node();node != NULL; node = node->next_sibling()){
node = root->first_node();
std::cout<<node->name()<<":"<<node->value()<<std::endl;
node = node->parent();//!!!
}