簡體   English   中英

select 的父節點如何與 XPath?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM