2012-10-21 76 views
2

我試圖選擇包含其屬性中某個給定字符串的節點,但似乎我只能對某個屬性執行此操作。從XML中選擇節點,其中包含某個屬性中的某個字符串

var tempUsers = xmlDocument.selectNodes("//Users/*[contains(@Id,'TEXT')]"); 

我想,而不是@ID我可以寫些別的東西來檢查節點的所有屬性,而不僅僅是Id。

謝謝。

回答

5

您可以使用@*在XPath來選擇所有屬性,但天真的

//Users/*[contains(@*,'TEXT')] 

做你所期望的。 contains函數期望它的參數是字符串,所以如果給它一個節點集合,它會首先將節點集合轉換爲一個字符串(通過取集合中第一個節點的字符串值),然後使用該值在函數中。相反,你需要說

//Users/*[@*[contains(.,'TEXT')]] 

將找到文檔中的所有元素Users,然後選擇具有其值包含子TEXT任何屬性所有的子元素。

+0

非常感謝伊恩!這很好用! :) – yoni

+0

@yoni如果答案適合您,請考慮_accepting_它通過點擊左邊的綠色勾號標記。如果你有接受良好答案的記錄,人們會更願意回答你未來的問題。 –

+0

沒問題@Ian。另一件事,我試圖做一個「不包含」的聲明,但沒有任何成功。你能幫我嗎? xmlDocument.selectNodes( 「//用戶/ * [不[@ * [含有( 'TEXT')]]。]」);這裏有什麼問題? – yoni

相關問題