0
点赞
收藏
分享

微信扫一扫

使用C#进行XML文档读写


创建XML文件

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

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

  • 由于xml文档需要文档声明:
  • 使用C#进行XML文档读写_经验分享

  • 所以在第一次创建xml文件的时候,我们要为文档对象添加这些声明,添加这些声明要使用​​XmlDocument.CreateXmlDeclaration()​​方法。调用​​AppendChild()​​方法将这个声明添加进去:
  • 使用C#进行XML文档读写_c#_02

  • 由于xml的节点都要包含在根标签中,还要添加根标签元素,根标签名称可以任意 一般都不会允许数字开头的名称
    调用​​CreateElement("标签名")​​创建一个元素,同样的,调用​​AppendChild()​​添加进去:
  • 使用C#进行XML文档读写_c#_03

  • 加载一个已有的xml文件,直接调用​​Load()​​方法即可:
  • 使用C#进行XML文档读写_xml_04

写入数据

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

读取数据:

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

附上完整代码

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

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);
}

/// <summary>
/// 实例化 xml 对象
/// 判断文件是否存在,若不存在则创建,存在则加载,并向文件中写入一条数据
/// </summary>
/// <param name="path"></param>
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);
}
}

/// <summary>
/// 写入数据
/// </summary>
/// <param name="xmlDocument"></param>
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");
}

/// <summary>
/// 读取数据
/// </summary>
/// <param name="path"></param>
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}");
}
}
}
}
}


举报

相关推荐

0 条评论