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();
        }
    }
}

 

posted @ 2021-07-25 14:37  可达鸭子  阅读(171)  评论(0编辑  收藏  举报