C# XML 用List遍历

把写好的xml导入C#winform项目中

新建一个类:

代码:

using System.Collections.Generic;
using System.Text;

namespace xml
{
    class Skill //类要以大写开头
    {
        //把id 设置为属性去获取
        public int ID { get; set; }
        public string Name { get; set; }
        public string Lang { get; set; } //语言--标签属性
        public int Damage { get; set; } //破坏力
    }
}

主函数代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;

namespace xml
{
    class Program
    {
        static void Main(string[] args)
        {
            //用一个列表 把新写的Skill类传进去 存储
            List<Skill> List = new List<Skill>();

            XmlDocument xmlDoc = new XmlDocument();

            //法1
            xmlDoc.Load("skills.xml"); //放在debug 下
            //法2
            //xmlDoc.LoadXml(File.ReadAllText("skills.xml")); //先把所有文本内容读出来 再加载进去

            XmlNode root = xmlDoc.ChildNodes[1]; //得到它的根节点
            XmlNodeList skillList = root.ChildNodes;
            foreach (XmlNode skill in skillList)  //这个就是遍历你文档里面的 sikll节点 
            {
                //这样 我们去遍历每一个skill节点的时候 先创建一个skill对象
                Skill obj_skill = new Skill();
                foreach (XmlNode node in skill.ChildNodes)
                {

                    if (node.Name == "id") //判断节点是不是id节点 是的话 把它的内容赋值给我们的类(列表)
                    {
                        //int                //返回的是string
                        obj_skill.ID = Int32.Parse(node.InnerText); //node.InnerText: 获取或设置节点及其所有子节点的连接值。
                    }
                    else if (node.Name == "name")
                    {
                        obj_skill.Name = node.InnerText; //名字中有一个标签属性 设置语言为中文 

                        obj_skill.Lang = node.Attributes[0].Value; //Attributes 获取xml节点中的属性 只有一个属性 所以选择属性下标为0 那个 .Name是获取属性的名字 Value是获取属性的值
                    } 
                    else if(node.Name == "damage") 
                    {

                        obj_skill.Damage = Int32.Parse(node.InnerText);

                    }
                }
                //然后把对象(新建的类)skill 放到我们的list集合里面
                List.Add(obj_skill); //把xml的值--(放)--》类-----(存)-----》某个集合里面-----》foreach遍历(读取)

                //类的属性数据 一般放到某个列表里去存取
            }

            foreach (Skill s in List)
            {
                //再用类遍历输出
                Console.WriteLine(s.ID+","+s.Name + "," +s.Lang + "," +s.Damage);
            
            }
        }
    }
}

运行结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 在C#中,我们可以使用XmlReader和XmlDocument类来对XML文件进行操作。 使用XmlReader类,可以按顺序读取XML文件的内容,并执行相应的操作。首先,我们需要创建一个XmlReaderSettings对象,并设置一些选项,比如忽略空白和注释。然后,使用XmlReader.Create方法创建一个XmlReader实例,并传入文件路径和XmlReaderSettings对象。接下来,可以使用while循环和Read方法来遍历XML文件的节点,并执行相应的操作。\[1\] 使用XmlDocument类,可以加载整个XML文件,并使用XPath表达式来选择和操作XML节点。首先,我们需要实例化一个XmlDocument对象,并使用Load方法加载XML文件,文件路径为绝对路径。然后,可以使用SelectSingleNode方法和XPath表达式来选择特定的节点。如果需要选择节点的子节点,可以使用ChildNodes属性将子节点集合成一个列表。\[2\] 下面是一个XML文件的示例: <bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> 使用C#XML文件进行操作,可以根据具体需求选择使用XmlReader或XmlDocument类。 #### 引用[.reference_title] - *1* *2* *3* [C#解析XML文件](https://blog.csdn.net/simplenthpower/article/details/128669633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耐心195

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值