2010-09-06 35 views
1

我需要獲取包含特定屬性的標記列表。我使用DITA XML,我需要找出所有具有href屬性的標籤。如何查找具有特定屬性的XML標記(使用C#)

這裏的問題是該屬性可能在任何標籤內,所以XPath在這種情況下不起作用。例如,圖片標籤可能包含href,topicref標籤可能包含href等等。

所以我需要得到一個XmlNodeList(由getElementByTagName方法返回)。理想情況下,我需要一個方法getElementByAttributeName,應該返回XmlNodeList

+0

XPATH是*完全*的選項。您可以使用'*'作爲任何元素的通配符匹配,正如@Chris Taylor的答案所示。 – 2010-09-06 21:16:25

+0

謝謝Mads。我不知道我們可以在XPATH中使用通配符。 – matrix 2010-09-23 15:00:05

回答

5

我可能會在這裏誤解了你的問題,但我認爲你可能使用XPath表達式。

var nodes = doc.SelectNodes("//*[@href='pic1.jpg']"); 

以上應返回的所有元素與href='pic1.jpg',其中docXmlDocument

+0

不可能,絕對。 – annakata 2010-09-06 13:04:58

+0

更通用的XPATH返回所有具有href屬性的元素,無論它的值是什麼:'// * [@ href]' – 2010-09-06 21:14:48

3

如果你在C#,那麼下面的方法也許爲你工作:

XDocument document = XDocument.Load(xmlReader); 
XAttribute xa = new XAttribute("href", "pic1.jpg"); 
var attrList = document.Descendants().Where (d => d.Attributes().Contains(xa)); 
相關問題