c# - 在 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.Private.Xml.dll 中发生“System.Xml.XmlException”类型的异常,但未在用户代码中处理名称不能以“3”字符开头,十六进制值 0x33
如何获得第三个元素?
解决方案
这是因为您将 XMLElement 的名称与您的 进行比较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();
推荐阅读
- powershell - 执行 PowerShell 代码时出错
- blockchain - 与已通过地址部署的以太坊智能合约交互
- android - HTTP 失败:java.net.SocketException:套接字关闭改造
- c++ - 如何获取 Ascii 格式 llvm 的指针类型?
- algorithm - 查看一条线何时接触球体
- python - 如何在Python中连续打印多行文本(一个相邻)
- asp.net - IIS 回收等待什么?
- azure - Azure Bot Service Direct Line API v3.0 在开始对话时不断抛出 403 错误
- php - FCM 在使用 PHP 发送推送通知之前验证设备令牌
- asp.net - 从 elasticsearch index 获取嵌套映射的类型