2013-02-10 109 views
0

我有這個xml文件,我試圖從中獲取一些標記。
這裏是東西......我想提取具有與特定值的特定屬性的標籤......使用Linq C查詢具有特定屬性的特定xml標記的值#

下面是一個例子

<root> 
    <input class="x">Data</input> 
    <input>Data2</input> 
    <input name="y">Data3</input> 
    <input class="z">Data4</input> 
</root> 

我想所有的「輸入「標籤具有」class「屬性。

List<XElement> selected = xmlDoc.Descendants("input").Where(t => t.Element("input").Attributes("class") != null).ToList(); 

但它給了我lambda表達式中的空引用異常...你能幫我嗎?

回答

0

t.Attributes("class")將永遠不會返回null。改爲使用t.Attribute("class")(或.Where(t => t.Attributes("class").Any()))。

你不也需要t.Element("input")

var selected = xmlDoc.Descendants("input") 
         .Where(t => t.Attribute("class") != null) 
         .ToList(); 

或者乾脆

var selected = xmlDoc.XPathSelectElements("//input[@class]").ToList(); 

使用XPath的幫助

+1

感謝您與我的工作:) – 2013-02-10 14:55:01

0

你會想這

List<XElement> selected = xmlDoc.Descendants("input").Where(t => t.Attribute("class") != null).ToList(); 

你是想看看輸入節點輸入節點的內部。

相關問題