C# 如何使用LINQ检查特定XML节点是否存在
由于或标记不存在,我得到一个错误。我试图检查它是否为空,但我的代码不起作用。我得到一个错误: {对象引用未设置为对象的实例。} 代码如下:C# 如何使用LINQ检查特定XML节点是否存在,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,由于或标记不存在,我得到一个错误。我试图检查它是否为空,但我的代码不起作用。我得到一个错误: {对象引用未设置为对象的实例。} 代码如下: var networkElement = doc.Root .Element("networkAdapters") .Elements("networkAdapter") .First(a => (string
var networkElement = doc.Root
.Element("networkAdapters")
.Elements("networkAdapter")
.First(a => (string)a.Attribute("id") == networkAdapter.networkAdapterId.ToString());
var dnsServers = networkElement.Element("dnsServers")
.Elements("dnsServer") == null ? null : networkElement.Element("dnsServers").Elements("dnsServer");
和XML示例:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<server id="454a8a22-8e9e-4023-9a8e-c8a4e0f259b3" productName="Manifest" created="2014-01-16T22:07:28" name="SERVER001">
<networkAdapters>
<networkAdapter id="bfcbda99-719c-4b0c-b7b2-b9167350c982" busLocation="0-N2" permanentMacAddress="00144FE5448E" physicalAdapter="True" ipEnabled="False">
<defaultGateways />
<ipAddresses />
</networkAdapter>
<networkAdapter id="73606723-fd91-40df-96dd-0bff7851cea6" ipEnabled="True">
<defaultGateways>
<defaultGateway address="99.15.210.1" index="0" />
</defaultGateways>
<ipAddresses>
<ipAddress address="99.15.210.7" subnetMask="255.255.255.224" index="0" />
</ipAddresses>
</networkAdapter>
<networkAdapter id="6520a041-2cf3-40b1-b123-1eb13f704442" busLocation="0-N3" permanentMacAddress="00144FE5448F" physicalAdapter="True" ipEnabled="False">
<defaultGateways />
<ipAddresses />
</networkAdapter>
</networkAdapters>
</server>
谢谢请尝试以下内容:
var servers = networkElement.Element("dnsServers") ?? new XElement("dnsServers");
var dnsServers = servers.Elements("dnsServer");
当您的文档中没有non时,它将创建为空,以便让ElementsdnsServer查询毫无例外地工作
您可以将其作为一个班轮:
var dnsServers = (networkElement.Element("dnsServers") ?? new XElement("dnsServers")).Elements("dnsServer");
您的XML看起来怎么样?刚刚发布。有时我们收到的文件中没有井内的标签,我需要能够检查是否有任何IP地址,换句话说,以验证我们是否有标签。我也是。我在这个xml文件中注意到的一点是,我有标记,但没有,所以我需要找到一个逻辑来检查我是否有任何IPAddress或DNSServer。当它应该为NULL时,它返回NOTNULL,因为我在文件中没有DNSServer。我错过什么了吗?thanksIt在没有元素时返回空集合。但要澄清的是:您需要元素列表还是只需要一个元素/null?好吧,我需要能够检查是否有任何IPAddress,换句话说,以验证是否有标记。我也是。我在这个xml文件中注意到的一点是,我有标记,但没有,因此我需要找到一个逻辑来检查我是否有任何IPAddress或DNSServer。-谢谢你,你的建议很好,只是意识到这是一个空的收藏,对不起…非常感谢