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

如何遍历XML所有节点并解析product节点的product-id属性值

嘿,我来帮你优化这段解析XML提取product节点product-id属性的代码!针对你的需求,我调整了代码的写法,既提升效率又避免潜在的报错问题:

解析XML中product节点的product-id属性值

改进后的代码

using System;
using System.Xml.Linq;

class ReadProductIdsFromXml
{
    public static void Main()
    {
        // 加载目标XML文档
        XDocument xdoc = XDocument.Load("catalog.xml");

        // 直接定位所有product节点,不用遍历全部节点再判断类型
        foreach (XElement productElement in xdoc.Descendants("product"))
        {
            // 安全获取product-id属性,避免属性不存在时抛出空引用异常
            string productId = productElement.Attribute("product-id")?.Value;
            
            if (!string.IsNullOrEmpty(productId))
            {
                Console.WriteLine($"产品ID:{productId}");
            }
            else
            {
                Console.WriteLine("注意:发现一个缺少product-id属性的product节点");
            }
        }
    }
}

核心优化说明:

  • 更精准的节点查找:直接用xdoc.Descendants("product")获取所有层级的product节点,省去了遍历所有节点再判断名称的冗余步骤,代码更简洁高效
  • 空安全的属性访问:替换原代码中Attributes["product-id"].Value的写法为Attribute("product-id")?.Value,如果某个product节点没有product-id属性,会返回null而不是抛出NullReferenceException,后续的空值判断也能优雅处理这种异常情况
  • 可读性提升:调整了类名让语义更清晰,整理了using语句格式,还增加了友好的输出提示

如果你的XML里product节点只存在于根节点的直接子级,也可以把Descendants换成xdoc.Root.Elements("product"),定位会更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:02:51