System.Xml
下使用XmlDocument
类来创建一个 xml 文档对象,我们通过对这个对象添加子元素来为 xml 文档添加元素
所以在第一次创建xml文件的时候,我们要为文档对象添加这些声明,添加这些声明要使用XmlDocument.CreateXmlDeclaration()
方法。调用AppendChild()
方法将这个声明添加进去:
由于xml的节点都要包含在根标签中,还要添加根标签元素,根标签名称可以任意 一般都不会允许数字开头的名称
调用CreateElement("标签名")
创建一个元素,同样的,调用AppendChild()
添加进去:
CreateElement("标签名")
创建一个元素,调用该元素对象的SetAttribute("属性名", "属性值")
设置它的属性值,获取值就用GetAttribute("属性名")
XmlReader
类,使用XmlReader.Create("文档路径")
加载一个 xml 文档调用
read()
方法开始读取数据 (这类似于SqlDataReader类),返回值为bool读到最后返回 false,根据name
判断读到的标签是不是自己需要的,如果需要就调用 GetAttribute() 获取到它的属性值。调用完要关闭对象,或使用 using块自动释放
测试代码,实际使用的时候,微调下
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}");
}
}
}
}
}