2010-03-17 141 views
0

我有一個包含類似以下節點的XML文檔: -幫助中XPath表達式

<a class="custom">test</a> 
<a class="xyz"></a> 

我tryng以獲取其類不是「自定義」的節點和我寫了像下面的表達式: -

XmlNodeList nodeList = document.SelectNodes("//*[self::A[@class!='custom'] or self::a[@class!='custom']]"); 

現在,我想IMG標籤,以及和我想添加以下李毅華,以及上述表達式: -

//*[self::IMG or self::img] 

...這樣我就可以獲得所有IMG節點以及任何標籤,而不是將「自定義」作爲class屬性中的值。

任何幫助將不勝感激。

編輯: - 我嘗試以下,這是一個無效的語法,因爲這會返回一個布爾值,而不是任何節點列表: -

XmlNodeList nodeList = document.SelectNodes("//*[self::A[@class!='custom'] or self::a[@class!='custom']] && [self::IMG or self::img]"); 
+0

沒有接受者? :-(我的方法錯了嗎? – 2010-03-17 13:39:11

+0

對於你的第一個XPath查詢...我不是XPath專家,但不會''XmlNodeList nodeList = document.SelectNodes(「// a [@class ='custom'] 「);'已經訣竅了嗎? – 2010-03-17 13:41:42

+0

Richard,謝謝你的時間。其實第一個XPath的工作原理。我只是需要以某種方式添加第二個XPath到第一個XPath,我沒有找到一種方法來做到這一點。 – 2010-03-17 13:48:31

回答

2

不知道你在問什麼,但有你試過類似下面的東西?

"//A[@class!='custom'] | //a[@class!='custom'] | //IMG | //img" 
+0

這個表達式甚至沒有選擇不具有「自定義」作爲屬性值的節點,我的第一個XPath適用於這個至少。 – 2010-03-17 13:55:04

+0

我編輯它幾秒鐘在使用XSL工作表進行測試後發佈它,在語句中使用時,它工作得很好,你能發佈一個更大的XML代碼片段嗎? – baol 2010-03-17 13:58:19

+0

這應該工作得很好。簡單的XML文檔,它抓住了預期的節點秒。 – Tom 2010-03-17 14:02:39