• C#的XML文件的读取与写入


    在设计程序的时候,对于一些变化性较强的数据,可以保存在XML文件中,以方便用户修改。尤其是对于一些软硬件的配置文件,很多都选择了用XML文件来存取。XML文件简单易用,而且可以在任何应用程序中读写数据,所以它是一种重要的通用文件。下面的例子简单演示了XML文件的创建、读取和写入。
    XmlProcess类中的Using指令

     using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Xml;

    XmlProcess类
     

     class XmlProcess
        {
            //创建一个XML对象
            XmlDocument xmlDoc;

            //定义一个结点对象
            XmlNode node;

            //获取当前工作目录路径
            string workDir = Directory.GetCurrentDirectory();

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


            //定义一个元素
            XmlElement xmlEle;
            public void CreatNewXml()
            {
                //在工作目录下创建一个XML文件
                //实例化XML对象
                xmlDoc = new XmlDocument();           

                //加入XML文件的声明段落,,<?xml version="1.0" encoding="gb2312"?>
                XmlDeclaration xmlDecl;
                xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
                xmlDoc.AppendChild(xmlDecl);

                //加入一个根元素
                xmlEle = xmlDoc.CreateElement("", "成绩表", "");
                xmlDoc.AppendChild(xmlEle);
                //获取根结点
                XmlNode root = xmlDoc.SelectSingleNode("成绩表");

                //添加一个学生记录
                XmlElement stu1 = xmlDoc.CreateElement("学员1");
               
                XmlElement stuNo = xmlDoc.CreateElement("学号");
                stuNo.InnerText = "1001";
                XmlElement stuName = xmlDoc.CreateElement("姓名");
                stuName.InnerText = "abc";
                XmlElement stuGrade = xmlDoc.CreateElement("成绩");
                stuGrade.InnerText = "96";
                stu1.AppendChild(stuNo);
                stu1.AppendChild(stuName);
                stu1.AppendChild(stuGrade);
                root.AppendChild(stu1);

                //添加第二个学生记录
                XmlElement stu2 = xmlDoc.CreateElement("学员2");

                stuNo = xmlDoc.CreateElement("学号");
                stuNo.InnerText = "1002";
                stuName = xmlDoc.CreateElement("姓名");
                stuName.InnerText = "abcd";
                stuGrade = xmlDoc.CreateElement("成绩");
                stuGrade.InnerText = "90";
                stu2.AppendChild(stuNo);
                stu2.AppendChild(stuName);
                stu2.AppendChild(stuGrade);
                root.AppendChild(stu2);

                //以上为手动添加XML文件的方法,用于创建并书写XML文件
                //还可以使用XmlTextWriter对象输出数据流


                //生成并保存XML文件
                xmlDoc.Save(workDir + "\StudentGrade.xml");
            }


            public void DataIn(string fileName)
            {           
                xmlDoc = new XmlDocument();

                //载入XML文件
                xmlDoc.Load(workDir+"\"+fileName);
                //获取根结点
                XmlNodeList nodes = xmlDoc.SelectNodes("/成绩表");
                for (int i = 0; i < nodes.Count; i++)
                {
                    //获取学生信息的结点总数
                    XmlNodeList nls = nodes[i].ChildNodes;

                    //循环填充学生实例的各个字段
                    for (int j = 0; j < nls.Count; j++)
                    {
                        //创建学生类实例
                        Student stu = new Student();

                        node = nls[j].SelectSingleNode("学号");
                        stu.学号 = int.Parse(node.InnerText);

                        node = nls[j].SelectSingleNode("姓名");
                        stu.姓名 = node.InnerText;

                        node = nls[j].SelectSingleNode("成绩");
                        stu.成绩 = int.Parse(node.InnerText);
                        stuList.Add(stu);
                    }
                }
            }

            public void DataOut()
            {
                //输出学生信息
                for (int i = 0; i < stuList.Count; i++)
                {
                    Student stu = stuList[i];
                    Console.WriteLine(stu.学号.ToString()+"  "+stu.姓名+"  "+stu.成绩.ToString());
                }
            }
            /**//*
            public void WriteXml()
            {
                XmlTextWriter writer = new XmlTextWriter(workDir + "\test.xml", Encoding.Default);
                writer.Formatting = Formatting.Indented;
                writer.WriteStartDocument();           
                writer.WriteStartElement("学员");
                writer.WriteElementString("学号", "110");
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }
            */
        }
     

    读取出的数据仍然缓冲在泛型类List中,数据记录保存在Student类的实例中:
    Student类:

     class Student
        {
            public int 学号 { get; set; }
            public string 姓名 { get; set; }
            public int 成绩 { get; set; }
        }

     

    XML文件的内容:

     <?xml version="1.0" encoding="gb2312"?>
    <成绩表>
      
    <学员1>
        
    <学号>1001</学号>
        
    <姓名>abc</姓名>
        
    <成绩>96</成绩>
      
    </学员1>
      
    <学员2>
        
    <学号>1002</学号>
        
    <姓名>abcd</姓名>
        
    <成绩>90</成绩>
      
    </学员2>
    </成绩表>

    该示例演示的是创建XML文件并在其中手动插入数据。
    如果XML文件已经存在,则可以直接对其进行读取及各种其他操作,具体操作请百度搜索一下。

  • 相关阅读:
    IOS实现自动循环滚动广告--ScrollView的优化和封装
    iOS开发知识点总结
    iOS项目常用效果方法注意点集锦
    项目功能大全,让你的项目一天搞定
    Xcode调试技巧(断点和重构)
    Swift学习笔记-ARC
    常用的属性修饰
    __ block
    小笔记
    java+tomcat安装
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3568999.html
Copyright © 2020-2023  润新知