在 XDocument 中查找元素

Find Element in XDocument

我有这个xml:

<List>
  <Element>
    <ID>1</ID>
    <property>19</property>
  </Element>
  <Element>
    <ID>2</ID>
    <property>11</property>
  </Element>
  <Element>
    <ID>3</ID>
    <property>5</property>
  </Element>
</List>

不,我喜欢我的代码给我 ID 为 3 的元素。

我试过这个:

var node = doc.Descendants().Where(n => n.Elements().Where(x=>x.Name == id.ToString()).FirstOrDefault()!=null).FirstOrDefault();

但是出现了这个异常:

'System.Xml.XmlException' 类型的异常发生在 System.Private.Xml.dll 中,但未在用户代码中处理 名称不能以 '3' 字符开头,十六进制值 0x33

如何获得第三个元素?

这是因为您要将 XML 元素的名称与 id 进行比较,而 XML 规范规定元素的名称不能以数字开头。所以不是比较名称,而是像这样比较值:

var node = doc.Descendants()
    .Where(n => n.Elements()
         // I Changed 'x.Name' to 'x.Value' here
        .Where(x => x.Value == id.ToString())
    .FirstOrDefault()!=null)
.FirstOrDefault();