我想選擇所有具有相同屬性的節點,我得到了標題中的錯誤。未處理的異常:System.Xml.XPath.XPathException:表達式必須評估節點集
我的Xpath字符串看起來像//@[id=****]
,任何人都知道什麼是錯的?
我想選擇所有具有相同屬性的節點,我得到了標題中的錯誤。未處理的異常:System.Xml.XPath.XPathException:表達式必須評估節點集
我的Xpath字符串看起來像//@[id=****]
,任何人都知道什麼是錯的?
你的XPath表達式也許應該是:
//*[@id='something']
這意味着匹配其id
屬性等於something
所有元素,文檔中的任何地方。
編輯:如果你想id
屬性節點本身,而不是他們的父元素,你可以使用:
//*[@id='something']/@id
甚至更好,因爲@Dimitre Novatchev建議:
//@id[. = 'something']
你是對的,謝謝!想知道爲什麼我們可以使用// @ id而沒有明星。 – user496949 2010-11-13 09:53:21
@ user496949,'// @ id'將匹配'id'屬性節點本身而不是它們的父元素。 – 2010-11-13 09:54:51
好的。我可以使用XPath獲取id = 7的某些屬性節點嗎? – user496949 2010-11-13 09:59:27
我試圖選擇所有節點與 屬性相等的東西,我得到 標題中的錯誤。
我的Xpath字符串看起來像
//@[id=****]
,有誰知道 是什麼錯?
很多問題,這個表達式:
0.1。 //@[some-condition]
謂詞只能應用於選定的節點,但//@
不會選擇任何節點。 @
是attribute::
的縮寫,這是一個未完成的節點測試。它在這裏缺少節點類型或節點名稱。
什麼是正確的是://@*[some-condition]
或//@attrName[some-condition]
0.2。 id=****
在語法上無效,除非* *是一個有效的XPath表達式本身。我的猜測是,你想要獲得所有具有某個已知字面值的屬性值。在任何這種情況下,使用的語法是id='someLiteral
- 請注意包圍文字值的單引號(它們也可以是雙引號)。
解:
//*[@id='something']
這將選擇XML文檔中具有屬性id
與值'something'
所有元素。
//@id[. = 'something']
這將選擇XML文檔,其值是'something'
名爲id
所有屬性。
//@*[. = 'something']
這將選擇XML文檔中的所有屬性(無論其名稱),其值是'something'
。
+1對於正確的'// @ id [。 ='something']'表達式和語法錯誤的解釋。 – 2010-11-14 20:47:15
沒有看到XML文檔(或者至少是相關的部分)並且知道你想要選擇什麼,我們就不可能知道。 – Oded 2010-11-13 09:49:17
獲得解決方案。看起來像我們可以使用// @ id,但選擇特定的節點,如id = 7,我必須使用類似於// node [@ id = 7] – user496949 2010-11-13 09:51:57
好問題,+1。請參閱我的答案,詳細討論XPath表達式和幾種解決方案的問題。 – 2010-11-13 17:47:02