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