我有这个xml文件,我试图从中获取一些标签 这就是......我想提取具有特定值的特定属性的标签......
这是一个例子
<root>
<input class="x">Data</input>
<input>Data2</input>
<input name="y">Data3</input>
<input class="z">Data4</input>
</root>
我想获得所有具有“class”属性的“input”标签。
List<XElement> selected = xmlDoc.Descendants("input").Where(t => t.Element("input").Attributes("class") != null).ToList();
但是它在lambda表达式中给了我一个空引用异常...你能帮帮我吗?
答案 0 :(得分:0)
你会想要这个
List<XElement> selected = xmlDoc.Descendants("input").Where(t => t.Attribute("class") != null).ToList();
您试图查看输入节点内的输入节点。
答案 1 :(得分: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的帮助下