C#对xml的读写
【学习记录】
b站超越菜鸟系列视频学习整理
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用命名空间
using System.Xml;
namespace ConsoleApp1
{
public class wr
{
///<summary>
///生成一个xml文档
///</summary>
public void WriteXml()
{
//随机数
Random rd = new Random();
//首先,创建xml文档
/*1、实例化一个xmlDocument类*/
XmlDocument xDoc = new XmlDocument();
//创建一个声明XML文档所需要的语法的变量
XmlDeclaration declaration= xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
xDoc.AppendChild(declaration);
//一个xml文档,必须要有一个根元素
//创建根节点students
XmlElement elem = xDoc.CreateElement("students");
//把根节点添加到xml文档中去
xDoc.AppendChild(elem);
for (int i = 1; i <= 10; i++)
{
//添加子节点
XmlElement elem1 = xDoc.CreateElement("student");
//将第一级的子节点放置到根节点的下面
elem.AppendChild(elem1);
添加子节点的子节点
//XmlElement elem1_1 = xDoc.CreateElement("name");
将第一级的子节点放置到根节点的下面
//elem.AppendChild(elem1_1);
//给节点添加属性
elem1.SetAttribute("姓名", "张三");
elem1.SetAttribute("学号", rd.Next(10000,99999).ToString());
//添加第三级节点
XmlElement elem1_1 = xDoc.CreateElement("语文成绩");
//将第三级的子节点放置到第二级节点的下面
elem1.AppendChild(elem1_1);
//增加节点中的数据
elem1_1.InnerText = rd.Next(60,100).ToString();
XmlElement elem1_2 = xDoc.CreateElement("数学成绩");
//将第三级的子节点放置到第二级节点的下面
elem1.AppendChild(elem1_2);
elem1_2.InnerText = rd.Next(60,100).ToString();
XmlElement elem1_3 = xDoc.CreateElement("英语成绩");
//将第三级的子节点放置到第二级节点的下面
elem1.AppendChild(elem1_3);
elem1_3.InnerText = rd.Next(60,100).ToString();
}
xDoc.Save("students.xml");
}
/// <summary>
/// 读取xml文档
/// </summary>
public void ReadXml()
{
//实例化一个xml操作对象
XmlDocument xDoc = new XmlDocument();
xDoc.Load("students.xml");
//获取根节点students
XmlNode node = xDoc.SelectSingleNode("students");
XmlNodeList nodeList = node.ChildNodes;
foreach(XmlNode xn in nodeList)
{
//类型显示转换
XmlElement xmle = (XmlElement)xn;
string name = xmle.GetAttribute("姓名");
string no = xmle.GetAttribute("学号");
XmlNodeList childList = xn.ChildNodes;
//先输出姓名和学号信息
Console.WriteLine(name + ":" + no);
foreach (XmlNode n in childList)
{
//类型转换
XmlElement xe = (XmlElement)n;
string className = xe.Name;
string score = xe.InnerText;
//再输出成绩信息
Console.WriteLine(className + ":"+ score);
}
}
//生成或者修改XML文档的时候,末尾一定要写save方法
xDoc.Save("students.xml");
Console.ReadKey();
}
}
}