2010-11-13 73 views
2

我有一些節點的XML文檔一樣XPath表達式獲得一些屬性

<node name="xxx" id="xxx"> 

我可以用一個XPath表達式來獲得所有屬性節點,其父母也已atrtribute @id = 7

+0

好問題,+1。到目前爲止,看到我的答案是唯一正確和完整的解決方案。 :) – 2010-11-13 17:59:18

回答

1

不需要。您需要定義要讀出哪個屬性 - 逐個。

/node[@id=7]/@name 

將得到name

/node[@id=7]/@id 

將得到id

+1

實際上,這很容易在單個XPath表達式中指定 - 請參閱我的答案。沒有必要指定特定的屬性名稱。 – 2010-11-13 18:00:41

+0

你寫了*你需要定義要讀出哪個屬性 - 一個接一個*。這句話是錯誤的。 – 2010-11-14 20:50:08

1

這將選擇所有id屬性具有值7節點:

//*/@id[. = '7'] 
+0

如何選擇id = 7的所有名稱屬性? – user496949 2010-11-13 10:19:01

+0

@ user496949 - 會是:'// * [id ='7']/@ name' – Oded 2010-11-13 10:20:26

2

使用

//@*[not(name()='id') and ../@id = 7] 

這個選擇所有非ID屬性,其父母有一個id屬性與價值數7。這將接受id='7'id=' 7 '

//@*[not(name()='id') and ../@id = '7'] 

這個選擇所有非ID屬性,其父母有一個id屬性值爲字符串'7'。這將接受id='7'但不是id=' 7 '