1.使用C#读写XML文档
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //引用命名空间 using System.Xml; namespace Read_write_XML { public class RWXml { //生成一个xml文档 public void WriteXml() { //随机数 Random rd = new Random(); //首先,创建xml文档 /* * 1.实例化一个xml Document类 其中一共有三个参数,都是string类型的,第一个是版本 参考<?xml version="1.0" encoding="utf-8" ?> 第一个参数为"1.0" 第二个参数为编码方式"utf-8" 第三个参数为,必须是yes或者no 一定要写返回类型,返回类型是XmlDeclaration类型的*/ XmlDocument xDoc = new XmlDocument(); //创建一个声明xml文档所需要的语法的变量 XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes"); //下面AppendChild方法是用来将指定的节点添加到该节点的子节点列表的末尾,在xml文件第一行后面就是末尾 xDoc.AppendChild(declaration); //一个xml文档,必须要有一个根元素 //创建根节点students //XmlElement相当于XmlNode XmlElement elem = xDoc.CreateElement("students"); //把根节点添加到xml文档中去 xDoc.AppendChild(elem); //目前为止只有子节点,但是没有根节点 //下面是设置student个数 for (int i = 1; i <= 10; i++) { //下面开始添加子节点,放在根节点的下面,提示,xDoc是xml文档 XmlElement elem1 = xDoc.CreateElement("student");//把子节点放到根节点elem的下面去 //将第一级的子节点,放置到根节点的下面去 elem.AppendChild(elem1); //下面就是添加属性,属性就是student里面的东西了,例如名字性别等等 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");//将xml文档保存在指定的文件 } //下面是读取Xml文档的 public void ReadXml() { //首先,创建xml文档 /* * 1.实例化一个xml Document对象*/ XmlDocument xDoc = new XmlDocument(); //2.加载xml文件 xDoc.Load("students.xml"); //第一步要获取根节点students XmlNode node = xDoc.SelectSingleNode("students"); XmlNodeList nodeList = node.ChildNodes; foreach(XmlNode xn in nodeList) { //string name = xn.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;//InnerText是获取或者设置值 //再输出成绩信息 Console.WriteLine(className + ":" + score); //如果想修改可以进行以下的操作 //使用if语句对某一个进行更改 if (no== "63729") xe.InnerText = "100"; } } //生成或者修改xml文档,末尾一定要写save方法 xDoc.Save("students.xml"); Console.ReadKey(); } } }
using System; using System.Xml; namespace Read_write_XML { class Program { static void Main(string[] args) { RWXml xml = new RWXml(); xml.ReadXml(); } } }