我正在使用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;
}
似乎不起作用(它输出的次数,但其值似乎甚至没有出现在该元素中)。
感谢。
答案 0 :(得分:0)
“// a”选择文档中的所有“a”节点;你可能意味着“.//a”选择子树中的所有“a”节点。
您也可以使用一个XPath表达式而不是多个:
//td[@class='title']//a[1]
这将选择每个 td的第一个标记 - 即[1]仅适用于// a,而不适用于完整表达。