xml的读写
vs建一个c# .NET FRAMEWORK 控制台应用程序
![](https://i-blog.csdnimg.cn/blog_migrate/a644f64831a6c7560560192a04a3d3d9.png)
program.cs
![](https://i-blog.csdnimg.cn/blog_migrate/3f08accecdf78deceafb0778be59f579.png)
引入命名空间
//引用命名空间
using System.Xml;
using System.Xml.Serialization;
写一个xml文档的代码(没啥用
public void WriteXml()
{
//随机数
Random rd = new Random();
//首先,创建一个xml文档
//1.实例化一个xmlDocument类
XmlDocument xDoc = new XmlDocument();
//用返回值去接收
//声明一个declaration类型的变量接收
//2.创建一个声明xml文档所需要的语法的变量
XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
//将指定的添加到当前末尾
xDoc.AppendChild(declaration);
//一个xml文档必须要有一个根元素
//创建根节点students
XmlElement elem = xDoc.CreateElement("students");
//把根节点添加到xml文档中去
xDoc.AppendChild(elem);
//10次可以改成变量
for (int i = 1; i <= 10; i++)
{
//添加子节点,把子节点放到根节点下面
XmlElement elem1 = xDoc.CreateElement("student");
//把指定的第二级子节点添加到根节点elem下面
elem.AppendChild(elem1);
//给节点添加属性
elem1.SetAttribute("姓名", "张三");
elem1.SetAttribute("学号", rd.Next().ToString());
//添加第三级节点
XmlElement elem1_1 = xDoc.CreateElement("语文成绩");
//把指定的子节点添加到第二级节点elem1下面
elem1.AppendChild(elem1_1);
//增加节点中的数据
elem1_1.InnerText = rd.Next(100).ToString();
//返回指定范围 Next(60,100)
//添加第三级节点
XmlElement elem1_2 = xDoc.CreateElement("数学成绩");
//把指定的子节点添加到根节点elem下面
elem1.AppendChild(elem1_2);
//增加节点中的数据
elem1_2.InnerText = rd.Next(100).ToString();
//添加第三级节点
XmlElement elem1_3 = xDoc.CreateElement("英语成绩");
//把指定的子节点添加到根节点elem下面
elem1.AppendChild(elem1_3);
//增加节点中的数据
elem1_3.InnerText = rd.Next(100).ToString();
}
//操作之后要保存如文档
xDoc.Save("students.xml");
}
生成的xml如下:
![](https://i-blog.csdnimg.cn/blog_migrate/3abfa3f9ad9419c103715e8571ea1da0.png)
读xml的一些操作
public void ReadXml()
{
//实例化一个xml操作对象
XmlDocument xDoc = new XmlDocument();
//加载了才能操作
xDoc.Load("students.xml");
//获取根节点students
//取第一个符合的 eg:有很多student 只取第一个
XmlNode node = xDoc.SelectSingleNode("students");
XmlNodeList nodeList = node.ChildNodes;
//根节点的子节点很多,要写循环,集合用foreach
//xn 在nodeList 里面,到没有了为止退出循环
foreach (XmlNode xn in nodeList)
{
//获取节点的名字
//string name = xn.Name;
//Console.WriteLine(name);
//做类型显示转换
XmlElement xmle = (XmlElement)xn;
//获取节点的属性
string name = xmle.GetAttribute("姓名");
string no = xmle.GetAttribute("学号");
Console.WriteLine(name + ":" + no);
//先输出姓名和学号信息
XmlNodeList childList = xn.ChildNodes;
foreach(XmlNode n in childList)
{
//类型转换
XmlElement xe = (XmlElement)n;
string ClassName = xe.Name;
string Score = xe.InnerText;
//再输出成绩信息
Console.WriteLine(ClassName + ":" + Score );
//Console.WriteLine( Score);
//改
if (no == "845458479")
xe.InnerText = "100";
}
}
//改之后要保存
xDoc.Save("students.xml");
Console.ReadKey();
}
xml读入数据库