2011-03-10 83 views
2

它是否支持Xpath支持的所有節點類型?看來,當我打電話.NET SelectNodes()是否允許您選擇屬性?

的selectNodes(「@」)

它只是返回包含屬性的元素,但我想自己屬性的列表。換句話說,我希望得到的節點集合包含Attr類型的節點......但似乎不起作用。

+1

會發生什麼,當你使用'的SelectNodes( 「@ *」 )'? – 2011-03-10 07:43:41

+0

檢查我的答案是否有正確的語法和解釋。 – 2011-03-10 17:54:49

回答

0

從文檔:

選擇匹配 XPath表達式節點的列表。

雖然

(的節點)Attributes屬性獲取包含本 節點的屬性的XmlAttributeCollection 。

http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspx

爲了得到一個文檔中的所有屬性(我認爲這是你想要做什麼?),你可能想嘗試

的selectNodes( 「@ *」)

+0

這並沒有真正回答他的問題,因爲'XmlAttribute'派生自'XmlNode'。 – 2011-03-10 07:42:55

+0

@丹尼爾,自從你評論以來,我已經更新了我的答案。我正在編輯它,因爲我認爲我知道他想要做什麼。 – 2011-03-10 07:51:12

+0

正如@Daniel所說的,屬性只是另一種XMLNodeType ......我希望你能夠通過SelectNodes()返回一組屬性......當然使用@Shiv中建議的Xpath,但我仍然可以'讓它返回一個集合。試圖找出SelectNodes()是否會返回除了元素之外的屬性。 – Eric 2011-03-10 07:59:06

1

的foreach(在的selectNodes XmlAttribute ATT( 「* /@ *」)) ...

0

選擇上下文節點的屬性正確的XPath語法是:

@* 

或者

attribute::* 

但是千萬注意,只有元素可能有屬性。所以,如果上下文節點是文檔根目錄,當然你不會選擇任何東西。

如果你想所有從文檔的屬性,使用方法:

//@* 

這將擴大到:

/descendant-or-self::node()/attribute::*