【C#】C#操作xml文件

466 阅读2分钟

xml语法

  1. 必须有开始和结束标签
  2. 区分大小写
  3. 必须有根元素
  4. 注释用

下面创建一个StudentsInfo.xml文件进行测试

<?xml version = '1.0' encoding='UTF-8'?>
<Students>
  <student>
    <Name ID="1001">哈哈</Name>
    <Class>1</Class>
  </student>
  <student>
    <Name ID="1002">啊啊</Name>
    <Class>3</Class>
  </student>
  <student>
    <Name ID="1003">xixi</Name>
    <Class>1</Class>
  </student>
</Students>

创建Model

public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }

    public string Class { get; set; }

    public override string ToString()
    {
        return string.Format("ID:{0},Name:{1},Class:{2}", ID, Name, Class);
    }
}

读取解析xml

//创建xmlDocument对象
XmlDocument xmlDocument = new XmlDocument();
//加载xml文档
xmlDocument.Load("StudentsInfo.xml");

//获取根节点(Students)
XmlNode rootNode = xmlDocument.SelectSingleNode("/Students");
//获取根节点下面子节点的集合(所有student)
XmlNodeList stuNodeList = rootNode.ChildNodes;

List<Student> stuList = new List<Student>();

foreach (XmlNode stuNode in stuNodeList)
{
    Student stu = new Student();
    //获取student下面的所有节点(ID,Name,Class)
    XmlNodeList fieldNodeList = stuNode.ChildNodes;

    foreach (XmlNode fieldNode in fieldNodeList)
    {
        if (fieldNode.Name == "Name")
        {
            stu.Name = fieldNode.InnerText;
            stu.ID = int.Parse(fieldNode.Attributes["ID"].Value);
        }
        else if (fieldNode.Name == "Class")
        {
            stu.Class = fieldNode.InnerText;
        }
    }

    stuList.Add(stu);
}
//输出
foreach (var stu in stuList)
{
    Console.WriteLine(stu.ToString());
}

也可以通过XmlElement 来解析Sutdent信息

foreach (XmlNode stuNode in stuNodeList)
{
    Student stu = new Student();

    XmlElement nameEle = stuNode["Name"];
    stu.Name = nameEle.InnerText;
    stu.ID = int.Parse(nameEle.Attributes["ID"].Value);
    XmlElement classEle = stuNode["Class"];
    stu.Class = classEle.InnerText;

    stuList.Add(stu);
}

输出

修改xml

//创建xmlDocument对象
XmlDocument xmlDocument = new XmlDocument();
//加载xml文档
xmlDocument.Load("StudentsInfo.xml");

//获取根节点(Student)
XmlNode rootNode = xmlDocument.FirstChild;
//获取根节点下面子节点的集合(所有student)
XmlNodeList stuNodeList = rootNode.ChildNodes;

List<Student> stuList = new List<Student>();

XmlElement nameEle = stuNodeList[0]["Name"];

//修改节点值
nameEle.InnerText = "哈哈2";
//修改属性值
nameEle.SetAttribute("ID", "1005");

//保存
xmlDocument.Save("StudentsInfo.xml");

修改之后记得保存Save

创建xml文件

//创建xmlDocument对象
XmlDocument xmlDoc = new XmlDocument();

//创建根节点
xmlDoc.LoadXml("<?xml version = '1.0' encoding='UTF-8'?><Students></Students>");
//获取Students节点
XmlElement Students = xmlDoc.DocumentElement;

//创建学生节点student
XmlElement student = xmlDoc.CreateElement("student");

//创建Name
XmlElement stuName = xmlDoc.CreateElement("Name");
stuName.InnerText = "哈哈";
stuName.SetAttribute("ID", "1001");
student.AppendChild(stuName);
//创建Class
XmlElement stuClass = xmlDoc.CreateElement("Class");
stuClass.InnerText = "1";
student.AppendChild(stuClass);

Students.AppendChild(student);
//保存
xmlDoc.Save("StudentsInfo.xml");

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Students>
  <student>
    <Name ID="1001">哈哈</Name>
    <Class>1</Class>
  </student>
</Students>