天天看點

C#讀寫xml檔案

c#讀寫xml檔案

已知有一個XML檔案(bookstore.xml)如下:

C#讀寫xml檔案
C#讀寫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>節點:

C#讀寫xml檔案
C#讀寫xml檔案

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load("da.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");

            xesub1.InnerText = "CS從入門到精通";//設定文本節點

            xe1.AppendChild(xesub1);//添加到<book>節點中

            XmlElement xesub2 = xmlDoc.CreateElement("author");

            xesub2.InnerText = "候捷";

            xe1.AppendChild(xesub2);

            XmlElement xesub3 = xmlDoc.CreateElement("price");

            xesub3.InnerText = "58.3";

            xe1.AppendChild(xesub3);

            root.AppendChild(xe1);//添加到<bookstore>節點中

            xmlDoc.Save("da.xml");

結果為:

C#讀寫xml檔案
C#讀寫xml檔案

<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>

2、修改節點:将genre屬性值為“李贊紅“的節點的genre值改為“update李贊紅”,将該節點的子節點<author>的文本修改為“亞勝”。

C#讀寫xml檔案
C#讀寫xml檔案

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)//周遊

         {

              XmlElement xe2=(XmlElement)xn1;//轉換類型

              if(xe2.Name=="author")//如果找到

              {

                   xe2.InnerText="亞勝";//則修改

                   break;//找到退出來就可以了

              }

         }

         break;

   }

}

xmlDoc.Save("bookstore.xml");//儲存。

C#利用XmlTextReader讀取XML節點資料

C#讀寫xml檔案
C#讀寫xml檔案

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

<google>

  <googleColorBorder>f6fbff</googleColorBorder>

  <googleColorBG>f6fbff</googleColorBG>

  <googleColorLink>666666</googleColorLink>

  <googleColorText>046b7A</googleColorText>

  <googleColorUrl>008000</googleColorUrl>

</google>

C#讀寫xml檔案
C#讀寫xml檔案

protected void Page_Load(object sender, EventArgs e)

        XmlTextReader xtr = new XmlTextReader("c:\\AdColor2.xml");

        while (xtr.Read()) {

            if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "googleColorBorder") {

                Response.Write(xtr.ReadString() + "<br/>");

            }

            if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "googleColorBG")

            {

            if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "googleColorLink")

            if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "googleColorText")

            if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "googleColorUrl")

        }

    }