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

如何使用C#遍历XElement节点并比较节点值

C#遍历XElement节点并比较值的实现方案

没问题,我来帮你实现这个需求。首先我们要用到System.Xml.Linq命名空间下的类来处理XML,下面是完整的代码示例和步骤说明:

首先,先看完整的可运行代码:

using System;
using System.Xml.Linq;

class EmployeeComparison
{
    static void Main()
    {
        // 加载你的XML内容,这里直接用字符串构造,也可以从文件加载
        string xmlData = @"<Information> 
                            <Emp> 
                                <A.EMPLID>1</A.EMPLID> 
                                <A.Phone>12##</A.Phone> 
                            </Emp> 
                            <Emp_Add> 
                                <B.ID>125</B.ID> 
                                <Add>XXXXXXX</Add> 
                            </Emp_Add> 
                            <Emp_Add> 
                                <B.ID>1256</B.ID> 
                                <Add>ZZZZZZ</Add> 
                            </Emp_Add> 
                        </Information>";
        
        // 解析XML为XElement对象
        XElement infoRoot = XElement.Parse(xmlData);
        
        // 获取<Emp>节点下的<A.EMPLID>值,用空条件运算符避免空引用
        string emplIdStr = infoRoot.Element("Emp")?.Element("A.EMPLID")?.Value;
        
        // 先校验<A.EMPLID>是否有效(如果是数值类型的话)
        if (!int.TryParse(emplIdStr, out int emplId))
        {
            Console.WriteLine("Error: <A.EMPLID>的值不是有效的整数");
            return;
        }
        
        // 遍历所有<Emp_Add>节点
        foreach (XElement empAddNode in infoRoot.Elements("Emp_Add"))
        {
            // 获取当前<Emp_Add>下的<B.ID>值
            string bIdStr = empAddNode.Element("B.ID")?.Value;
            
            // 校验<B.ID>的有效性
            if (int.TryParse(bIdStr, out int bId))
            {
                // 比较两个数值
                if (bId == emplId)
                {
                    Console.WriteLine("Values matched");
                }
                else
                {
                    Console.WriteLine("Values does not match");
                }
            }
            else
            {
                Console.WriteLine($"Warning: 当前<Emp_Add>节点的<B.ID>值({bIdStr})无效");
            }
        }
    }
}

关键步骤说明:

  • XML加载与解析:用XElement.Parse()解析字符串形式的XML,如果是从文件读取,替换成XElement.Load("your-file-path.xml")即可。
  • 空值安全处理:使用?.空条件运算符,防止XML节点缺失时抛出空引用异常,这在实际业务场景中非常实用。
  • 值的比较方式:这里用了数值比较(转换成int),因为你的示例中都是数字类型的值,这样能避免字符串比较时的前导零、空格等问题;如果你的业务场景需要字符串精确匹配,直接用string.Equals(emplIdStr, bIdStr, StringComparison.Ordinal)即可。
  • 遍历节点:通过infoRoot.Elements("Emp_Add")直接获取根节点下所有的<Emp_Add>子节点,要是<Emp_Add>嵌套在更深层级,可以改用infoRoot.Descendants("Emp_Add")来查找所有匹配的节点。

运行这段代码后,会逐个遍历<Emp_Add>节点,输出对应的匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:45:20