如何获取节点内的值

时间:2014-10-31 06:13:57

标签: c++ rapidxml

如果我有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

2 个答案:

答案 0 :(得分:0)

使用next_sibling函数查找同一节点下的下一个字符串。 Xerces库使用相同的方法来查找同一节点下的下一个字符串。

答案 1 :(得分:0)

好问题:我最初误读了你试图解析的XML结构。

我没有尝试过这个,但我认为一旦找到第一个节点<aaa>,你必须得到第一个子节点(应该有node_data类型,值{{1}在你的例子中。),而不是获得1111的价值。

然后遍历其所有兄弟姐妹,寻找类型为node_element的其他节点。