You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linq to XML获取outageEvent属性与元素及空引用异常解决

错误原因

你要查询的comments等直属子元素和outageEvent节点同属http://www.multispeak.org/Version_4.1_Release命名空间,你查询子元素时没有携带命名空间,导致Element("comments")匹配不到节点返回null,访问.Value属性时触发空引用异常。

修复代码

查询子元素时带上你已经声明的oecn命名空间即可,同时建议用(string)强转的方式替代直接访问.Value,可以避免节点不存在时抛出异常:

var alloutages = from outage in outages.Descendants(oecn + "outageEvent")
                 select new
                 {
                     outageID = (string)outage.Attribute("objectID"),
                     comments = (string)outage.Element(oecn + "comments"),
                     // 其他需要提取的直属子元素都按此格式加命名空间即可
                     objectName = (string)outage.Element(oecn + "objectName")
                 };

如果不需要硬编码字段,想动态遍历所有直属子元素(跳过extensionsList避免读取孙节点)可以用如下写法:

foreach (var outage in outages.Descendants(oecn + "outageEvent"))
{
    // 先取objectID
    string outageId = (string)outage.Attribute("objectID");
    // 遍历所有直属子节点,过滤掉extensionsList
    foreach (var childNode in outage.Elements().Where(n => n.Name.LocalName != "extensionsList"))
    {
        string fieldName = childNode.Name.LocalName;
        string fieldValue = (string)childNode;
        // 此处可自行处理字段映射,存入数据库
    }
}

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:54:07