2013-02-10 108 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(); 

你是想看看输入节点输入节点的内部。

相关问题