• 【C#】XML的基础知识以及读取XML文件


    最近在学读取文件


    介绍

    XML (可扩展标记语言,eXtensible Markup Language) 是一种标记语言,它被设计用来传输和存储数据。

    特点

    • 可扩展性:由于 XML 的语法灵活,可以通过定义新的标记和属性来扩展其功能。
    • 可读性:XML 的语法结构使其易于阅读和理解。
    • 平台无关性:XML 可以在不同的平台上被处理和解析,如 Windows、Linux、MacOS 等。
    • 编码规范:XML 规定了严格的语法和编码规范,确保数据的正确解析。

    结构

    一个简单的XML文档展示:
    在这里插入图片描述

    第一行是 XML 声明,它定义 XML 的版本和所使用的编码),然后是根元素,然后是根元素的子元素(当然,可以继续嵌套)

    XML的结构由标签元素属性文本组成。

    • 标签(tag):以尖括号(< >)包围的单词或词组,用来起始和结束元素。

    • 元素(element):指标签包含的整个内容。元素通常由开始标签和结束标签组成,有时也可以是自封闭的标签。

    • 属性(attribute):定义在开始标签内的附加信息。属性是由名称和值组成的,它们用空格隔开。

    • 文本(text):元素内部不包含标签的部分。文本可以包含实际的数据或者说明信息。

    在这里插入图片描述

    XML的语法规则

    • XML文档必须有一个根元素,该元素是所有其他元素的父元素。
    • XML元素的开始标签和结束标签要成对出现。
    • XML标签名严格区分大小写。
    • XML属性必须在开始标签中定义,并且属性名和属性值必须用等号(=)分隔。
    • XML属性值必须用引号(" 或 ')括起来。
    • XML的注释 < !-- 这是注释内容 – >。
    • XML文档必须符合XML规范,即必须包含声明。

    XML 命名规则

    • 名称不能以数字或者标点符号开始
    • 名称不能以字符 “xml”(或者 XML、Xml)开始
    • 名称不能包含空格

    C#操作XML

    新建

    • 添加—>类
      在这里插入图片描述

    • 选择XML文件->输入一个名称->点击添加在这里插入图片描述

    • 输入内容就可以了!!

    
    <person>
    	<person p="man">
    		<name>LiHuaname>
    		<age>18age>
    		<height>172height>
    	person>
    	<person p="woman">
    		<name>Lingname>
    		<age>18age>
    		<height>168height>
    	person>
    person>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    有了这个XML文件之后,接下来,我们可以对它进行一些操作了!!


    读取

    第一种

    在这里插入图片描述

    代码:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    
    namespace _02_XML操作
    {
        class Program
        {
            static void Main(string[] args)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("Person.xml");
    
                XmlNode root = xmlDoc.ChildNodes[1];
                XmlNodeList personList = root.ChildNodes;
                foreach (XmlNode person in personList)
                {
                    foreach (XmlNode node in person.ChildNodes)
                    {
                        Console.WriteLine(node.Name + ":" + node.InnerText);
                    }
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    运行结果:
    在这里插入图片描述


    第二种
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    
    namespace _02_XML操作
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<Person> list = new List<Person>();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
    
                XmlNode root = xmlDoc.ChildNodes[1];
                XmlNodeList personList = root.ChildNodes;
                foreach(XmlNode person in personList)
                {
                    Person obj = new Person();
                    foreach(XmlNode node in person.ChildNodes)
                    {
                        if (node.Name == "name")
                        {
                            obj.name = node.InnerText;
                        }else if (node.Name == "age")
                        {
                            obj.age = Int32.Parse(node.InnerText);
                        }else if (node.Name == "height")
                        {
                            obj.height = Int32.Parse(node.InnerText);
                        }
                    }
                    list.Add(obj);
                }
                foreach(Person p in list)
                {
                    Console.WriteLine(p.name + "," + p.age + "," + p.height);
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    运行结果:
    在这里插入图片描述


    第三种

    代码:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    
    namespace _02_XML操作
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<Person> list = new List<Person>();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
    
                XmlNode root = xmlDoc.ChildNodes[1];
                XmlNodeList personList = root.ChildNodes;
                foreach(XmlNode person in personList)
                {
                    Person obj = new Person();
                    XmlElement nameEle = person["name"];
                    obj.name = nameEle.InnerText;
                    XmlElement ageEle = person["age"];
                    obj.age = Int32.Parse(ageEle.InnerText);
                    XmlElement heightEle = person["height"];
                    obj.height = Int32.Parse(heightEle.InnerText);
    
                    list.Add(obj);
                }
                foreach(Person p in list)
                {
                    Console.WriteLine(p.name + "," + p.age + "," + p.height);
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    运行结果:
    在这里插入图片描述

    读取属性

    代码:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    
    namespace _02_XML操作
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<Person> list = new List<Person>();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(File.ReadAllText("Person.xml"));
    
                XmlNode root = xmlDoc.ChildNodes[1];
                XmlNodeList personList = root.ChildNodes;
                foreach(XmlNode person in personList)
                {
                    Person obj = new Person();
    
                    //读取属性
                    XmlAttributeCollection attriCol = person.Attributes;
                    XmlAttribute attri = attriCol["p"];
                    obj.p = attri.Value;
    
      
                    XmlElement nameEle = person["name"];
                    obj.name = nameEle.InnerText;
    
    
                    XmlElement ageEle = person["age"];
                    obj.age = Int32.Parse(ageEle.InnerText);
                    XmlElement heightEle = person["height"];
                    obj.height = Int32.Parse(heightEle.InnerText);
    
                    list.Add(obj);
                }
                foreach(Person p in list)
                {
                    Console.WriteLine(p.p+","+p.name + "," + p.age + "," + p.height);
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    运行结果:
    在这里插入图片描述


    💦更多内容请前往主页置顶或点击链接直达:
    【unity3D】游戏开发专栏的目录

    【VR】VR开发专栏的目录

  • 相关阅读:
    netty websockt之断连重试
    CPU性能优化——“瑞士军刀“
    HttpClient远程调用基本使用(详解)
    Stable Diffusion生成图片的参数查看与抹除方法
    RabbitMQ小结
    自动化测试,5个技巧轻松搞定
    单片机---1MHz方波的产生(中断和查询方式)
    VScode中配置python环境
    Net 高级调试之十三:托管堆的几个经典破坏问题
    SUNLORDINC顺络电子LTCC产品推广资料
  • 原文地址:https://blog.csdn.net/zhurouwanzi/article/details/132977882