zoukankan      html  css  js  c++  java
  • XML教程(一)

     功能说明:

          1、使用XmlTextReader读取XML文件数据

          2、使用XmlDocument读取XML文件数据

          3、使用XmlDocument新增或修改XML节点

        

     

       一、XML文件

         <?xml version="1.0" encoding="utf-8" ?>

    <catalog>

      <book id="bk101">

        <author>Gambardella, Matthew</author>

        <title>XML Developer's Guide</title>

        <genre>Computer</genre>

        <price>44.95</price>

        <publish_date>2000-10-01</publish_date>

        <description>

          An in-depth look at creating applications

          with XML.

        </description>

      </book>

      <book id="bk102">

        <author>Ralls, Kim</author>

        <title>Midnight Rain</title>

        <genre>Fantasy</genre>

        <price>5.95</price>

        <publish_date>2000-12-16</publish_date>

        <description>

          A former architect battles corporate zombies,

          an evil sorceress, and her own childhood to become queen

          of the world.

        </description>

      </book>

    </catalog>

     

     二、使用XmlTextReader读取XML文件数据

         1、说明:XmlTextReader表示提供对 XML 数据进行快速、非缓存、只进访问的读取器。类似于ADO.NET里的DataReader

         2、代码

     XmlTextReader xmlTextReader = new XmlTextReader(@"Books.xml");

            xmlTextReader.WhitespaceHandling = WhitespaceHandling.None;

     

            while (xmlTextReader.Read())  //从上到下,依次读取XML文件的每一行

            {

                if (xmlTextReader.Name == "book")  //如果是book节点

                {

                    String str=xmlTextReader.GetAttribute("id"); //获取book节点的属性

     

                    xmlTextReader.Read();  //读下一行,这里读取到author 节点

    //读取author 节点内容并跳到下一行

     

                    string author = xmlTextReader.ReadElementContentAsString();                string title = xmlTextReader.ReadElementContentAsString();

                    string genre = xmlTextReader.ReadElementContentAsString();

                    string price = xmlTextReader.ReadElementContentAsString();

                    string publishDate = xmlTextReader.ReadElementContentAsString();

            //读取后跳到</book> 结束节点

                    string description = xmlTextReader.ReadElementContentAsString();

                }

            }

     

            xmlTextReader.Close();  //使用完需关闭

     

     

    三、使用XmlDocument读取XML文件数据

      1、说明:XmlDocument是一次性把XML数据读取到内存中进行操作,所以不用close()方法关闭

      2、代码

     XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(@"Books.xml");

            XmlNodeList xmlNodes = xmlDocument.GetElementsByTagName("book");

            foreach (XmlNode node in xmlNodes)

            {

                Console.WriteLine(node.Attributes["id"].Value + ":");

     

                XmlNodeReader xmlNodeReader = new XmlNodeReader(node);  //绑定时并不自动定位到book节点,必须调用read移动游标

                xmlNodeReader.Read();  //读到book节点

                xmlNodeReader.Read();  //读到author节点

                string author = xmlNodeReader.ReadElementContentAsString(); //读取并移动游标到下一行

                string title = xmlNodeReader.ReadElementContentAsString();

                string genre = xmlNodeReader.ReadElementContentAsString();

                string price = xmlNodeReader.ReadElementContentAsString();

                string publishDate = xmlNodeReader.ReadElementContentAsString();

                string description = xmlNodeReader.ReadElementContentAsString();

            }

     

     

    四、使用XmlDocument新增或修改XML节点

                1、新增节点

    XmlDocument xmlDocument = new XmlDocument();

             xmlDocument.Load(@"Books.xml");

    //创建元素节点

      XmlElement newElement = xmlDocument.CreateElement("book");

            //创建属性节点

            XmlAttribute newAttribute = xmlDocument.CreateAttribute("id");

            newAttribute.Value = "bk103";

            //创建元素节点

            XmlElement authorElement = xmlDocument.CreateElement("author");

            authorElement.InnerText = "Mark Russinovich,David Solomon,Alex Ionecsu";

            XmlElement titleElement = xmlDocument.CreateElement("title");

            titleElement.InnerText = "Windows Internals, 5th edition";

            XmlElement genreElement = xmlDocument.CreateElement("genre");

            genreElement.InnerText = "Windows Server 2008";

            XmlElement priceElement = xmlDocument.CreateElement("price");

            priceElement.InnerText = "69.99";

            XmlElement publishDateElement = xmlDocument.CreateElement("publish_date");

            publishDateElement.InnerText = "2009-6-17";

            XmlElement descriptionElement = xmlDocument.CreateElement("description");

            descriptionElement.InnerText = "Windows Internals, 5th edition is the" +

                " update to Windows Internals, 4th edition to cover Windows Vista" +

                " and Windows Server 2008 (32-bit and 64-bit).";

            //添加属性节点

            newElement.Attributes.Append(newAttribute);

            //添加元素节点

            newElement.AppendChild(authorElement);

            newElement.AppendChild(titleElement);

            newElement.AppendChild(genreElement);

            newElement.AppendChild(priceElement);

            newElement.AppendChild(publishDateElement);

            newElement.AppendChild(descriptionElement);

            xmlDocument.DocumentElement.AppendChild(newElement);

     

            //保存XML文档

             xmlDocument.Save("Modified Books.xml");  

     

     

    2、修改节点

    XmlDocument xmlDocument = new XmlDocument();

             xmlDocument.Load(@"Books.xml");

               //定位到要修改的节点(SelectSingleNode查询第一个符合条件的节点)

     XmlNode nodeToModify = xmlDocument.DocumentElement.SelectSingleNode(

                "book/genre");

    nodeToModify.InnerText = "XML Tech"//修改节点内容

     //保存XML文档

             xmlDocument.Save("Modified Books.xml");  

     

     

    参考内容:All-In-One Code Framework

  • 相关阅读:
    第三方支付
    优化MySQL插入方法的五个妙招
    MySQL的数据类型和建库策略详解
    mysql 文本搜索
    mysql 存储过程
    mysql 游标的使用
    mysql 触发器
    mysql 保留点
    MySQL 使用硬链接配合truncate 删除2.2T的表
    25-ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/gossip/p/1979867.html
Copyright © 2011-2022 走看看