简单的XPath程序不起作用

时间:2018-05-05 16:00:44

标签: c++ xml xpath pugixml

XML文件tree.xml:

<?xml version="1.0"?>
<mesh name="mesh_root">
    some text
    <![CDATA[someothertext]]>
    some more text
    <node attr1="value1" attr2="value2" />
    <node attr1="value2">
        <innernode/>
    </node>
</mesh>

我想获得<node>项。然后他们的attr1值。

C ++代码:

#include "pugixml.hpp"
#include <iostream>

using namespace pugi;
int main()
{
    xml_document doc;

    xml_parse_result result = doc.load_file("tree.xml");

    xpath_query q("node");
    xpath_node_set ns = doc.select_nodes(q);
    std::cout << ns.size() << std::endl;
}

我认为结果应该是2,但由于某种原因它是0.什么错了?

1 个答案:

答案 0 :(得分:0)

我的代码中有2个错误:

  1. 要匹配文档中的所有<node>元素,我们需要使用以下XPath表达式:“// node”

  2. 运行XPath查询的不同语法:

  3. xpath_query q("//node");
    xpath_node_set ns = q.evaluate_node_set(doc);
    std::cout << ns.size() << std::endl;
    

    打印2。