pugixml:选择节点失败

时间:2013-12-15 02:00:45

标签: c++ xml pugixml

我正在使用pugixml来解析以下xml:

<td class="title">
     <div class="random" />
     <a href="link">Link1 </a>
</td>

<td class="title">
     <div class="random" />
     <a href="link">Link2 </a>
</td>

等...

我希望td class =“title”中每个'a href'的值(显示的次数不确定),但只是第一个这样的实例。

我使用以下代码尝试获取这些值:

pugi::xpath_node_set link_nodes = list_doc.select_nodes("//td[@class='title']");

    for (pugi::xpath_node_set::const_iterator it = link_nodes.begin();it != link_nodes.end();++it)
    {
        pugi::xpath_node single_link_node = *it;

        std::cout << single_link_node.node().select_single_node("//a").node().attribute("href").value()<<std::endl;


    }

似乎不起作用(它输出的次数,但其值似乎甚至没有出现在该元素中)。

感谢。

1 个答案:

答案 0 :(得分:0)

“// a”选择文档中的所有“a”节点;你可能意味着“.//a”选择子树中的所有“a”节点。

您也可以使用一个XPath表达式而不是多个:

//td[@class='title']//a[1]

这将选择每个 td的第一个标记 - 即[1]仅适用于// a,而不适用于完整表达。