使用C#进行XML文档读写

创建XML文件

  • 操作 xml 类的命名空间在System.Xml

使用XmlDocument类来创建一个 xml 文档对象,我们通过对这个对象添加子元素来为 xml 文档添加元素

  • 由于xml文档需要文档声明:
    在这里插入图片描述

  • 所以在第一次创建xml文件的时候,我们要为文档对象添加这些声明,添加这些声明要使用XmlDocument.CreateXmlDeclaration()方法。调用AppendChild()方法将这个声明添加进去:
    在这里插入图片描述

  • 由于xml的节点都要包含在根标签中,还要添加根标签元素,根标签名称可以任意 一般都不会允许数字开头的名称
    调用CreateElement("标签名")创建一个元素,同样的,调用AppendChild()添加进去:
    在这里插入图片描述

  • 加载一个已有的xml文件,直接调用Load()方法即可:在这里插入图片描述

写入数据

  • 接下来,就可以往根标签中添加子元素存储数据了,使用CreateElement("标签名")创建一个元素,调用该元素对象的SetAttribute("属性名", "属性值")设置它的属性值,获取值就用GetAttribute("属性名")使用C#进行XML文档读写_第1张图片
  • 添加完元素后,调用Save()方法,传入路径,就保存下来了,文档内容如下:
    使用C#进行XML文档读写_第2张图片

读取数据:

  • 对xml文档的读取需要使用XmlReader类,使用XmlReader.Create("文档路径")加载一个 xml 文档

调用read()方法开始读取数据 (这类似于SqlDataReader类),返回值为bool读到最后返回 false,根据 name 判断读到的标签是不是自己需要的,如果需要就调用 GetAttribute() 获取到它的属性值。调用完要关闭对象,或使用 using块自动释放
使用C#进行XML文档读写_第3张图片在这里插入图片描述

附上完整代码

测试代码,实际使用的时候,微调下

using System;
using System.IO;
using System.Xml;

namespace XMLDOM
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = "Data.xml";
            XMLObj(path);
            ReadDataXML(path);
        }

        /// 
        /// 实例化 xml 对象
        /// 判断文件是否存在,若不存在则创建,存在则加载,并向文件中写入一条数据
        /// 
        /// 
        static void XMLObj(string path)
        {
            //实例化 XmlDocument 对象
            XmlDocument xmlDocument = new XmlDocument();

            //判断文件是否存在 不存在则创建
            if (!File.Exists(path))
            {
                //添加 xml 文档文档声明
                xmlDocument.AppendChild(xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes"));
                //添加根节点
                xmlDocument.AppendChild(xmlDocument.CreateElement("root"));
                WriteDataXML(xmlDocument);

                return;
            }
            else
            {
                //加载xml文档
                xmlDocument.Load(path);
                WriteDataXML(xmlDocument);
            }
        }

        /// 
        /// 写入数据
        /// 
        /// 
        static void WriteDataXML(XmlDocument xmlDocument)
        {
            //创建子节点
            XmlElement xmlElement = xmlDocument.CreateElement("child");
            //添加节点内容
            xmlElement.SetAttribute("name", "演示");
            xmlElement.SetAttribute("time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            //保存
            xmlDocument.DocumentElement.AppendChild(xmlElement);
            xmlDocument.Save("Data.xml");
        }

        /// 
        /// 读取数据
        /// 
        /// 
        static void ReadDataXML(string path)
        {
        	//using 简化写法 如果不习惯 请手动改一下下
            using XmlReader reader = XmlReader.Create(path);
            while (reader.Read())
            {
                if (reader.Name == "child")
                {
                    string name = reader.GetAttribute("name");
                    string time = reader.GetAttribute("time");
                    Console.WriteLine($"name:{name},time:{time}");
                }
            }
        }
    }
}

你可能感兴趣的:(C#,c#,xml,文件,Io,经验分享)