【问题标题】:if exist on an XML node in XmlNodeList C#如果存在于 XmlNodeList C# 中的 XML 节点上
【发布时间】:2023-03-14 07:15:01
【问题描述】:

如何检查 XmlNodeList 中是否存在节点?我已经填充了一个列表,我需要查询出特定的值。我就是这样做的。

var xList = xelRoot.SelectNodes("aaa/bbb/ccc/ddd/eee/fff/ggg/hhh");
foreach (XmlNode node in xList)
{    
       serviceVal = node["service"].InnerText.ToString(); 
}

存在服务节点不存在的情况。当发生这种情况时,我收到错误“对象引用未设置为对象的实例”。

如果节点不存在,有没有办法返回字符串值?

这里是 xml 的示例。注意规则 1 没有服务节点

<entry name="aaa">
              <from>any</from>
              <to>any</to>
              <source>any</source>
              <destination>any</destination>
              <source-user>any</source-user>
              <category>any</category>
              <service>any</service>
        </entry>
        <entry name="Rule 1">
              <from>any</from>
              <to>any</to>
              <source>any</source>
              <destination>any</destination>
              <source-user>any</source-user>
              <category>any</category>
        </entry>

【问题讨论】:

  • 这里node的类型是什么? (它看起来不像是XmlNodeList...)一个简短但完整的程序确实有助于澄清问题 - 如果您可以使用 LINQ to XML,它可能也会导致更简单的代码。

标签: c# xml exists xmlnodelist


【解决方案1】:

只测试null...

XmlNode subNode;
foreach (XmlNode node in xList)
{    
    subNode = node["service"];
    if (subNode != null)
    {
        serviceVal = subNode.InnerText;
    }
    else 
    {
        serviceVal = string.Empty;
    } 
}

【讨论】:

  • hhh 下有很多子节点,我需要全部抓取。获取 hhh 下的所有内容的查询正在运行。我已经用 XML 的示例更新了问题
  • @user5019819 然后进行null 测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多