【笔记】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>

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

  

posted @ 2012-12-12 13:00  bomo  阅读(1629)  评论(0编辑  收藏  举报