[英]How select a parent node with XPath?
如果我有
<div>
<a>
<table>
<tr>
<td value="val">
如果我想 select 包含一个带有value="val"
的td
,我该怎么做?
我已经测试过:
//td[@value="val"]
但是我获得了td节点,我想获得a
节点。 如何使用 XPath 实现这一目标?
您可以使用以下任一选项。
//td[@value="val"]/ancestor::a
^
td with value val
^
ancestor link
或者
本例首选 xpath
//a[.//td[@value="val"]]
^
Get me any link which have td with value as val.
或者
下面的 xpath 现在可以工作,但是当页面有任何更改时,例如:如果将表格移动到 div 中,那么这个 xpath 将中断。
//td[@value="val"]/parent::tr/parent::table/parent::a
在这种情况下,我个人更喜欢至少第二个选项,因为a
没有任何特定属性。 而ancestor::a
将 select 任何作为 td 祖先的链接。
关于如何在 XPath 中将 select 作为父级的问题的直接答案是使用parent::
轴或..
缩写。 但是,通常,就像您的情况一样,您可以直接通过后代上的谓词 select 目标“父级”,而不是选择后代然后必须遍历到父级。 例如, ...
此 XPath,
//a[.//td/@value = "val"]
将 select 所有a
td
后代且@value
属性值等于"val"
的元素。
更新:我没有注意,现在看到@suppurtui 已经提供了上述 XPath 作为选项。 为了我的解释所提供的任何好处,我将保留此内容,但请支持@supputuri 的回答(正如我刚刚所做的那样)。 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.