stevenjin 2024-02-20 16:51 采纳率: 97.6%
浏览 1
已结题

C#xml遍历节点数据

C#获取到OuterXML如下元素信息,要取出数据

<?xml version="1.0"?>
-<device>
<info id="1" name="Digital Machine1" state="inStore"/>
<info id="2 name="Digital Machine2" state="inStore"/>
</device>
  • 写回答

3条回答 默认 最新

  • 哎呀呀不会啊 2024-02-20 16:57
    关注

    使用 System.Xml 命名空间中的 XmlDocument 类来加载和遍历XML数据。

    using System;
    using System.Xml;
    
    class Program
    {
        static void Main()
        {
            string xml = @"
                <?xml version=""1.0""?>
                <device>
                    <info id=""1"" name=""Digital Machine1"" state=""inStore""/>
                    <info id=""2"" name=""Digital Machine2"" state=""inStore""/>
                </device>";
    
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml); // 加载XML字符串
    
            XmlNode rootNode = doc.DocumentElement; // 获取根节点 <device>
            if (rootNode.Name == "device")
            {
                XmlNodeList infoNodes = rootNode.SelectNodes("info"); // 获取所有的 <info> 节点
                foreach (XmlNode infoNode in infoNodes)
                {
                    if (infoNode.NodeType == XmlNodeType.Element) // 确保是元素节点
                    {
                        string id = infoNode.Attributes["id"]?.Value; // 获取id属性值,注意空值处理
                        string name = infoNode.Attributes["name"]?.Value; // 获取name属性值
                        string state = infoNode.Attributes["state"]?.Value; // 获取state属性值
                        Console.WriteLine($"ID: {id}, Name: {name}, State: {state}"); // 输出属性值
                    }
                }
            }
            else
            {
                Console.WriteLine("The root node is not <device>");
            }
        }
    }
    

    首先创建了一个 XmlDocument 对象,并使用 LoadXml 方法加载了XML字符串。然后获取了根节点 <device>,并使用 SelectNodes 方法选择了所有的 <info> 子节点。在遍历这些 <info> 节点时,使用 Attributes 集合访问了每个节点的属性(idnamestate),并输出了它们的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月20日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?