0

我有这个 xml 文件,我试图从中获取一些标签。
这是事情......我想提取具有特定属性和特定值的标签......

这是一个例子

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

我想获取所有具有“类”属性的“输入”标签。

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

但它在 lambda 表达式中给了我一个空引用异常......你能帮帮我吗?

4

2 回答 2

0

你会想要这个

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

您试图查看输入节点内的输入节点。

于 2013-02-10T14:19:05.170 回答
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 的帮助下

于 2013-02-10T14:21:04.400 回答