2013-05-02 228 views
2

我正在嘗試創建az xpath,其中存在一個節點,其中存在具有屬性的子節點。我的問題是,這個結構的唯一區別是子屬性。下面是一個例子,向你展示我的意思:XPath選擇節點存在具有給定屬性值的子節點

<Values> 
    <record name="svc_sig"> 
     <record name="sig_in"> 
      <array name="rec_fields"> 
       <record> 
        <value name=field_name">UniqueName1</value> 
       </record> 
       <record> 
        <value name=field_name">UniqueName2</value> 
       </record> 
       <record> 
        <value name=field_name">UniqueName3</value> 
       </record> 
       <record> 
        <value name=field_name">UniqueName4</value> 
       </record> 
      </array> 
     </record> 
    </record> 
<Values> 

例如給定UniqueName3我想獲取包含它的記錄。 到目前爲止,我嘗試了以下內容:

/Values/record[@name='svc_sig']/record[@name='sig_in']/array[@name]/record/value[@name='field_name'] 

有了這個,但是我得到的所有具有屬性FIELD_NAME值節點。

+4

如果你想得到'UniqueName3'字符串的'記錄',你應該使用XPATH記錄[value/text()='UniqueName3'] – 2013-05-02 07:00:18

+0

謝謝,那就是我一直在尋找的! – Wrath 2013-05-02 07:02:04

回答

5

你可以試試這個:

//value[text()="UniqueName3"]/.. 

這將選擇record元素,它包含UniqueName3,因爲它是文本值value元素的父。

這裏是一個證明:http://www.xpathtester.com/obj/1afeedf1-46bd-4adb-841e-da6e6945b6d4(按測試按鈕)。

+0

我相信你也可以做'。='這是'text()=' – EralpB 2013-12-09 23:07:14

+0

的簡寫怎麼辦如果你想測試一個節點而不是text()? – 2014-11-07 08:46:01

相關問題