首页 > 解决方案 > 如何使用 XPath 选择父节点?

问题描述

如果我有

<div>
  <a>
    <table>
      <tr>
        <td value="val">

如果我想选择包含 a 的 a tdvalue="val"我该怎么做?

我已经测试过:

//td[@value="val"]

但是我获得了td节点,我想获得a节点。如何使用 XPath 实现这一点?

标签: htmlxmlxpath

解决方案


您可以使用以下任一选项。

//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 现在可以工作了,但是当页面有任何更改时,例如:如果 table 被移动到 div 中,那么这个 xpath 将会中断。

//td[@value="val"]/parent::tr/parent::table/parent::a

就我个人而言,至少在这种情况下,我更喜欢第二个选项,因为a它没有任何特定属性。并将ancestor::a选择任何作为 td 祖先的链接。


推荐阅读