zoukankan      html  css  js  c++  java
  • 读写XML文档

    已知有一个XML文件(bookstore.xml)如下:
    <?xml version="1.0" encoding="gb2312"?>
    <bookstore>
    <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
    </book>
    </bookstore>

     

    1、往<bookstore>节点中插入一个<book>节点:
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load("bookstore.xml"); //載入xml文檔,xml文檔要應用程序文件夾下
    XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>

    XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节元素点
    xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
    xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

    XmlElement xesub1=xmlDoc.CreateElement("title");//創建一個<title>元素節點
    xesub1.InnerText="CS从入门到精通"; //設置節點里面的內容
    xe1.AppendChild(xesub1);//添加xesub1到<book>节点中
    XmlElement xesub2=xmlDoc.CreateElement("author");//創建<author>節點
    xesub2.InnerText="候捷";
    xe1.AppendChild(xesub2); //添加xesub2到<book>节点中
    XmlElement xesub3=xmlDoc.CreateElement("price");//創建<price>節點
    xesub3.InnerText="58.3";
    xe1.AppendChild(xesub3);

    root.AppendChild(xe1);//添加到<bookstore>节点中
    xmlDoc.Save("bookstore.xml");
    //===============================================
    结果为:
    <?xml version="1.0" encoding="gb2312"?>
    <bookstore>
    <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
    </book>
    <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
    </book>
    </bookstore>

    2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
         XmlElement xe=(XmlElement)xn;//将节点类型转换为XmlElement类型
         if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
         {
              xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”

            XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
            foreach(XmlNode xn1 in nls)//遍历xe所有的子節點
            {
                 XmlElement xe2=(XmlElement)xn1;// 将节点类型转换为XmlElement元素类型
                 if(xe2.Name=="author")//如果找到為author的元素
                 {
                      xe2.InnerText="亚胜";//则修改元素的值
                      break;//找到退出来就可以了
                 }
            }
            break;
        }
    }

    xmlDoc.Save("bookstore.xml");//保存。
    //==================================================
    最后结果为:
    <?xml version="1.0" encoding="gb2312"?>
    <bookstore>
    <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
    </book>
    <book genre="update李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>亚胜</author>
    <price>58.3</price>
    </book>
    </bookstore>

     

     

    3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
    XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; //獲取<bookstore>的所有子節點

    foreach(XmlNode xn in xnl) //遍歷xnl的所有節點
    {
        XmlElement xe=(XmlElement)xn; //將節點轉換為xml元素
        if(xe.GetAttribute("genre")=="fantasy")
        {
            xe.RemoveAttribute("genre");//删除genre属性//刪除屬性genre值為fantasy的節點的genre屬性  
        }
        else if(xe.GetAttribute("genre")=="update李赞红")
        {
            xe.RemoveAll();//刪除屬性genre值為update李赞红的整個節點的內容
        }
    }
    xmlDoc.Save("bookstore.xml");
    //===========================================
    最后结果为:
    <?xml version="1.0" encoding="gb2312"?>
    <bookstore>
    <book ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
    </book>
    <book>
    </book>
    </bookstore>

     

     

    4、显示所有数据。
    XmlNode xn=xmlDoc.SelectSingleNode("bookstore");//選取<bookstore>節點

    XmlNodeList xnl=xn.ChildNodes;//獲取<bookstore>節點的所有子節點

    foreach(XmlNode xnf in xnl)//遍歷xnl的所有節點

    {
        XmlElement xe=(XmlElement)xnf; //將子節點轉換為xml元素
        Console.WriteLine(xe.GetAttribute("genre")); //輸出genre屬性的值
        Console.WriteLine(xe.GetAttribute("ISBN")); //輸出ISBN屬性的值

        XmlNodeList xnf1=xe.ChildNodes; //獲取xe的所有子節點
        foreach(XmlNode xn2 in xnf1) //遍歷xnf1的所有節點
        {
            Console.WriteLine(xn2.InnerText);//显示子节点点文本
        }
    }

  • 相关阅读:
    几种常用的曲线
    0188. Best Time to Buy and Sell Stock IV (H)
    0074. Search a 2D Matrix (M)
    0189. Rotate Array (E)
    0148. Sort List (M)
    0859. Buddy Strings (E)
    0316. Remove Duplicate Letters (M)
    0452. Minimum Number of Arrows to Burst Balloons (M)
    0449. Serialize and Deserialize BST (M)
    0704. Binary Search (E)
  • 原文地址:https://www.cnblogs.com/nofliu/p/1695459.html
Copyright © 2011-2022 走看看