zoukankan      html  css  js  c++  java
  • 【笔记】xml文件读写

    对于Xml文件的操作,C#.Net提供了相应的Xml操作类,方便对xml文件的读写

    下面是两种方法

    1、首先是创建xml文件,先实例化XmlDocument类,添加xml文档的声明

            XmlDocument doc = new XmlDocument();
    
            //加入声明
            XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
            doc.AppendChild(declaration);

    2、然后就是创建根节点Students,这里在根节点上创建三个子节点Student,然后添加到doc中

            XmlElement root = doc.CreateElement("Students");
            
            for (int i = 0; i < 3; i++)
            {
                //创建节点,设置属性
                XmlElement xe1 = doc.CreateElement("Student");
                xe1.SetAttribute("Name", "Bomo");
                xe1.SetAttribute("Sex", "man");
    
                //添加三个子节点
                XmlElement xesub1 = doc.CreateElement("语文");
                xesub1.InnerText = "70";
                xe1.AppendChild(xesub1);
                XmlElement xesub2 = doc.CreateElement("数学");
                xesub2.InnerText = "80";
                xe1.AppendChild(xesub2);
                XmlElement xesub3 = doc.CreateElement("英语");
                xesub3.InnerText = "90";
                xe1.AppendChild(xesub3);
    
                //添加到根节点中 
                root.AppendChild(xe1);
            }
            
            //添加根节点到文档类中
            doc.AppendChild(root);

    3、最后是保存xml文件

            doc.Save(@"test.xml");

      下面是test.xml文件的信息

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Students>
      <Student Name="Bomo" Sex="man">
        <语文>70</语文>
        <数学>80</数学>
        <英语>90</英语>
      </Student>
      <Student Name="Bomo" Sex="man">
        <语文>70</语文>
        <数学>80</数学>
        <英语>90</英语>
      </Student>
      <Student Name="Bomo" Sex="man">
        <语文>70</语文>
        <数学>80</数学>
        <英语>90</英语>
      </Student>
    </Students>

    4、下面是读取xml文档

            XmlDocument doc = new XmlDocument();
            doc.Load("test.xml");
            
            //得到根节点Students
            XmlNode node = doc.SelectSingleNode("Students");
            XmlElement element = (XmlElement)node;
    
            //取得根节点的子节点(三个Studnt)
            XmlNodeList nodeList = element.ChildNodes;
            foreach (XmlNode n in nodeList)
            {
                XmlElement xmlelement = (XmlElement)n;
    
                //得到节点的属性
                string name = xmlelement.GetAttribute("Name");
                string sex = xmlelement.GetAttribute("Sex");
    
                //修改节点属性
                xmlelement.SetAttribute("Name", "Tobi");
                xmlelement.SetAttribute("Sex", "Female");
    
                //取得Student节点的子节点(语文,数学,英语)
                foreach (XmlNode subnode in xmlelement.ChildNodes)
                {
                    XmlElement subelement = (XmlElement)subnode;
    
                    //取得节点的字符串的score
                    string score = subelement.InnerText;
                }
            }

      如果需要修改xml文件,则修改后调用Save方法即可

       常用的几个方法 GetAttribute,SetAttribute,SelectSingleNode,SelectNodes,RemoveAttribute,RemoveChild

    5、还有一种读写Xml文件的类

      XmlWtiter/XmlReader,XmlTextWriter/XmlTextReader

      为了方便看,代码进行了缩进,这样好理解一些,其实就是树形结构,很好理解

        XmlTextWriter writer = new XmlTextWriter("test2.xml", Encoding.UTF8);
    
        //格式为自动缩进
        writer.Formatting = Formatting.Indented;
        writer.WriteStartDocument();
    
        //创建根节点
        writer.WriteStartElement("root");
            //创建子节点Student
            writer.WriteStartElement("Student");
            writer.WriteAttributeString("name", "Bomo");
                writer.WriteStartElement("分数");
                    writer.WriteStartElement("语文");
                    writer.WriteString("60");
                    writer.WriteEndElement();
    
                    writer.WriteStartElement("数学");
                    writer.WriteString("70");
                    writer.WriteEndElement();
    
                    writer.WriteStartElement("英语");
                    writer.WriteString("80");
                    writer.WriteEndElement();
                writer.WriteEndElement();
            writer.WriteEndElement();
    
        writer.Close();

      得到的xml文件是这样的

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <Student name="Bomo">
        <分数>
          <语文>60</语文>
          <数学>70</数学>
          <英语>80</英语>
        </分数>
      </Student>
    </root>

      其他几个类的用法相似,就不列举了

      

  • 相关阅读:
    SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示
    SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何正确使用三维地图控件和工程树控件
    SkylineGlobe TerraExplorer for Web 7.1.0版本 接口示例
    如何解决一个从SkylineGlobe5版本升级到7版本遇到的小问题
    Cesium如何通过addImageryProvider方法加载SkylineGlobe Server发布的WMS服务
    SkylineGlobe7.0.1版本 支持SQLite(*.sqlite;*.db)数据库
    SkylineGlobe7.0.1版本 通过鼠标左右平移模型对象
    显示器文字发虚的一种原因
    HttpClient + IIS压缩动态内容
    C# Async Await 注意事项
  • 原文地址:https://www.cnblogs.com/bomo/p/2814453.html
Copyright © 2011-2022 走看看