当前位置:   article > 正文

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

c# 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文件->输入一个名称->点击添加在这里插入图片描述

  • 输入内容就可以了!!

<?xml version="1.0" encoding="utf-8" ?>
<person>
	<person p="man">
		<name>LiHua</name>
		<age>18</age>
		<height>172</height>
	</person>
	<person p="woman">
		<name>Ling</name>
		<age>18</age>
		<height>168</height>
	</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

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/913771
推荐阅读