如果我有xml内容
<aaa> 1111<bbb>222</bbb>333 </aaa>
然后如何获得价值&#34; 1111&#34;和&#34; 333&#34;
但我只能获得第一个节点的值,即&#34; 1111&#34;仅
请告知
代码在这里
#include <iostream>
#include "rapidxml/rapidxml.hpp"
#include <string.h>
using namespace std;
using namespace rapidxml;
string content = "<aaa> 1112<bbb>222</bbb>333 </aaa>";
int main(int argc, char**argv) {
xml_document<> m_doc;
try {
m_doc.parse<0>(&content[0]);
} catch (rapidxml::parse_error &error) {
cout <<"parse_error\n";
exit(1);
}
xml_node<>* node = m_doc.first_node();
cout << "name = " <<node->name()<<endl;
cout << "value = "<< node->value() <<endl;
cout << "value_size = "<< node->value_size()<<endl;
m_doc.clear();
return 0;
}
输出
name = aaa
value = 1111
value_size = 5
答案 0 :(得分:0)
使用next_sibling函数查找同一节点下的下一个字符串。 Xerces库使用相同的方法来查找同一节点下的下一个字符串。
答案 1 :(得分:0)
好问题:我最初误读了你试图解析的XML结构。
我没有尝试过这个,但我认为一旦找到第一个节点<aaa>
,你必须得到第一个子节点(应该有node_data
类型,值{{1}在你的例子中。),而不是获得1111
的价值。
然后遍历其所有兄弟姐妹,寻找类型为node_element
的其他节点。