在 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();
我有这个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();