我正在使用Html Agility Pack在网页上运行xpath查询.我想在表中找到包含某个有趣元素的行.在下面的示例中,我想获取第二行.
<table name="important">
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
<tr>
<td>Stuff I'm interested in</td>
<td><interestingtag/></td>
<td>More stuff I'm interested in</td>
</tr>
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
//table[@name='important']/tr[has a descendant named interestingtag]
Run Code Online (Sandbox Code Playgroud)
除了有效的xpath语法.;-)
我想我可以找到有趣的元素本身,然后从返回的节点向上运行父链,但似乎应该有一种方法可以一步完成这一步,而我只是在密集.
mir*_*rod 55
"有一个名为interestintag的后代" .//interestintag在XPath中拼写,所以你要找的表达式是:
//table[@name='important']/tr[.//interestingtag]
Run Code Online (Sandbox Code Playgroud)
Sco*_*ker 19
实际上,你需要寻找一个后代,而不是一个孩子:
//table[@name='important']/tr[descendant::interestingtag]
Run Code Online (Sandbox Code Playgroud)
我知道这不是OP所要求的,但是如果你想找到一个具有特定属性的后代的元素,你可以这样做:
//table[@name='important']/tr[.//*[@attr='value']]
Run Code Online (Sandbox Code Playgroud)