亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中XmlTextWriter讀寫xml文件詳細介紹

2020-01-24 03:29:59
字體:
來源:轉載
供稿:網友

XmlTextWriter類允許你將XML寫到一個文件中去。這個類包含了很多方法和屬性,使用這些屬性和方法可以使你更容易地處理XML。為了使用這個類,你必須首先創建一個新的XmlTextWriter對象,然后你可以將XML片斷加入到這個對象中。這個類中包含了不少的方法用于將各種類型的XML元素添加到XML文件中,下表給出了這些方法的名字和描述情況:

方法
 描述

WriteStartDocument
 書寫版本為“1.0”的 XML 聲明

WriteEndDocument
 關閉任何打開的元素或屬性

Close
 關閉流

WriteDocType
 寫出具有指定名稱和可選屬性的 DOCTYPE 聲明

WriteStartElement
 寫出指定的開始標記

WriteEndElement
 關閉一個元素

WriteFullEndElement
 關閉一個元素,并且總是寫入完整的結束標記

WriteElementString
 寫出包含字符串值的元素

WriteStartAttribute
 書寫屬性的起始內容

WriteEndAttribute
 關閉上一個 WriteStartAttribute 調用

WriteRaw
 手動書寫原始標記

WriteString
 書寫一個字符串

WriteAttributeString
 出具有指定值的屬性

WriteCData
 寫出包含指定文本的 <![CDATA[...]]> 塊

WriteComment
 寫出包含指定文本的注釋 <!--...-->

WriteWhiteSpace
 寫出給定的空白

WriteProcessingInstruction
 寫出在名稱和文本之間帶有空格的處理指令,如下所示:<?name text?>

如果你對于XML十分熟悉,那么你一定能很好的理解上面的這些方法。下面我們將給出一個例子,在這個例子中,我們將先創建一個文檔,添加一些元素,然后關閉這個文檔。添加了元素后你還可以添加子元素,屬性和其他內容。下面的代碼就是這樣的一個例子,它創建了一個文件名為title的XML文件。


復制代碼 代碼如下:

using System;
using System.IO;
using System.Xml;
public class Sample
{
  public static void Main()
  {
     XmlTextWriter writer = new XmlTextWriter("titles.xml", null);
     //寫入根元素
     writer.WriteStartElement("items");
     //加入子元素
     writer.WriteElementString("title", "Unreal Tournament 2003");
     writer.WriteElementString("title", "C&C: Renegade");
     writer.WriteElementString("title", "Dr. Seuss's ABC");
     //關閉根元素,并書寫結束標簽
     writer.WriteEndElement();
     //將XML寫入文件并且關閉XmlTextWriter
     writer.Close(); 
  }
}

如果你編譯并且執行上面的代碼,你將創建這個XML文件,文件中包含如下內容:

復制代碼 代碼如下:

<items>
    <title>Unreal Tournament 2003</title>
    <title>C&C: Renegade</title>
    <title>Dr. Seuss's ABC</title>
</items>

上面的代碼創建了一個名為writer的XmlTextWriter對象。當這個對象被創建時,它被關聯到一個名為titles.xml的文件。接著,程序創建了一個叫做items的根屬性,WriteStartElement方法創建了這個屬性的開始標簽。接下來,程序調用了WriteElementString方法創建了三個子元素。從上面的代碼你還可以看到,這個方法使用第一個參數(在上面的程序中是title)作為元素的標簽;使用第二個參數作為元素的值。當你添加了所有的元素后,你需要關閉根元素。這時你可以調用WriteEndElement方法關閉那個最近被打開的元素;在本例中,這個最近被打開的元素就是根元素。當所有的數據都已經寫好,根元素也已經關閉時,你可以將信息傳送給你的XmlTextWriter。這意味著這時候你可以調用Close方法關閉它了。

上面的代碼相對十分的簡單,下面我們看一個使用了XmlTextWriter類中更多方法,功能更加完善的例子。

復制代碼 代碼如下:

using System;
using System.IO;
using System.Xml;
public class Sample
{
  public static void Main()
  {
     XmlTextWriter writer = new XmlTextWriter("myMedia.xml", null);
     //使用自動縮進便于閱讀
     writer.Formatting = Formatting.Indented;
     //書寫根元素
     writer.WriteStartElement("items");
     //開始一個元素
     writer.WriteStartElement("item");
     //向先前創建的元素中添加一個屬性
     writer.WriteAttributeString("rating", "R");
     //添加子元素
     writer.WriteElementString("title", "The Matrix");
     writer.WriteElementString("format", "DVD");
     //關閉item元素
     writer.WriteEndElement();  // 關閉元素
     //在節點間添加一些空格
     writer.WriteWhitespace("/n");
     //使用原始字符串書寫第二個元素
     writer.WriteRaw("<item>" +
                     "<title>BloodWake</title>" +
                     "<format>XBox</format>" +
                     "</item>");
     //使用格式化的字符串書寫第三個元素
     writer.WriteRaw("/n  <item>/n" +
                     "    <title>Unreal Tournament 2003</title>/n" +
                     "    <format>CD</format>/n" +
                     "  </item>/n");
     // 關閉根元素
     writer.WriteFullEndElement();
     //將XML寫入文件并關閉writer
     writer.Close();
  }
}

上面代碼編譯運行后將得到myMedia.xml文件,文件的內容為:

復制代碼 代碼如下:

 <items>
  <item rating="R">
    <title>The Matrix</title>
    <format>DVD</format>
  </item>
<item>
    <title>BloodWake</title>
    <format>XBox</format>
</item>
  <item>
    <title>Unreal Tournament 2003</title>
    <format>CD</format>
  </item>
</items>

上面代碼中的注釋說明了這個程序的功能是如何實現的。需要記住的一件事是:當調用方法開始一個操作時,你需要在程序的合適的地方調用方法結束這個操作。例如,你調用了StartElement,你就必須調用EndElement關閉元素;當然在這兩個調用之間你也可以加入一個子元素。無論你何時調用EndElement方法,它總是關閉最近使用StartElement方法打開的那個元素(這和棧的工作方式很相似)。

使用XmlTextWriter十分的容易,不過我還是建議你自己動手試試這些代碼和方法。你試過以后會發現這些代碼能夠很容易地集成到你的程序中。你還應該記住,XmlTextWriter僅僅是.NET提供的眾多XML類中的一個。和XmlTextWriter一樣,其他的XML類也十分的容易使用

 


2)
我用的是一種很笨的方法,但可以幫助初學者了解訪問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");
   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("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)//遍歷
     {
      XmlElement xe2=(XmlElement)xn1;//轉換類型
      if(xe2.Name=="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;

   foreach(XmlNode xn in xnl)
   {
    XmlElement xe=(XmlElement)xn;
    if(xe.GetAttribute("genre")=="fantasy")
    {
     xe.RemoveAttribute("genre");//刪除genre屬性
    }
    else if(xe.GetAttribute("genre")=="update李贊紅")
    {
     xe.RemoveAll();//刪除該節點的全部內容
    }
   }
   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");

   XmlNodeList xnl=xn.ChildNodes;

   foreach(XmlNode xnf in xnl)
   {
    XmlElement xe=(XmlElement)xnf;
    Console.WriteLine(xe.GetAttribute("genre"));//顯示屬性值
    Console.WriteLine(xe.GetAttribute("ISBN"));

    XmlNodeList xnf1=xe.ChildNodes;
    foreach(XmlNode xn2 in xnf1)
    {
     Console.WriteLine(xn2.InnerText);//顯示子節點點文本
    }
   }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美—级高清免费播放| 91老司机精品视频| 国产婷婷97碰碰久久人人蜜臀| 午夜精品一区二区三区在线| 欧美日韩久久久久| 日韩在线免费观看视频| 欧美在线一区二区三区四| 日韩中文字幕免费看| 国产精品视频1区| 日韩精品中文字幕视频在线| 国产视频精品久久久| 亚洲一区美女视频在线观看免费| 成人免费网站在线观看| 国产精品久久久久久久av大片| 日韩激情视频在线| 日韩电影在线观看免费| 国产成人在线一区| 97视频色精品| 精品亚洲夜色av98在线观看| 欧美一区二区三区免费视| 国内精品伊人久久| 欧美日韩午夜视频在线观看| 国产原创欧美精品| 亚洲国产99精品国自产| 国产精品久久久久久亚洲影视| 91在线高清视频| 欧美最猛性xxxxx(亚洲精品)| 91久久久久久久一区二区| 青青草精品毛片| 亚洲综合在线播放| 成人精品一区二区三区电影黑人| 免费91麻豆精品国产自产在线观看| 久久精品影视伊人网| 色综合伊人色综合网站| 欧美乱大交做爰xxxⅹ性3| 欧美成人免费小视频| 久久久国产在线视频| 国产97在线|日韩| 26uuu日韩精品一区二区| 91久久精品国产91性色| 久久久精品欧美| 日本精品久久久久影院| 国产精品欧美一区二区三区奶水| 欧美亚洲国产精品| 久久精品视频一| 国产亚洲精品激情久久| 日韩经典一区二区三区| 国产精品福利网站| 国产精品久久久久久久久久久新郎| 国产精品视频网址| 日韩中文理论片| 日韩有码视频在线| 欧美激情视频网站| 亚洲女人天堂视频| 色综合天天狠天天透天天伊人| 亚洲va国产va天堂va久久| 97精品伊人久久久大香线蕉| 亚洲va国产va天堂va久久| 久久大大胆人体| 日韩中文字幕在线观看| 91久久精品美女| 久久精品福利视频| 97国产在线观看| 色哟哟入口国产精品| 日韩中文字幕在线播放| 国产精品扒开腿做爽爽爽视频| 亚洲aⅴ日韩av电影在线观看| 欧美韩日一区二区| 亚洲国产精品人人爽夜夜爽| 国产精品久久久久77777| 清纯唯美亚洲综合| 欧美电影免费观看网站| 日韩亚洲欧美成人| 青青青国产精品一区二区| 国内精久久久久久久久久人| 国内揄拍国内精品少妇国语| 亚洲国产第一页| 欧美午夜视频一区二区| 亚洲成人久久久| 日韩网站免费观看高清| 91精品在线一区| 亚洲女人天堂网| 久久久人成影片一区二区三区| 成人福利网站在线观看| 欧美亚洲午夜视频在线观看| 欧美成年人网站| 精品视频在线播放免| 成人黄色生活片| 久久精品精品电影网| 亚洲成年网站在线观看| 亚洲国产精品电影在线观看| 国产啪精品视频网站| 精品无人区太爽高潮在线播放| 国模叶桐国产精品一区| 久久久在线免费观看| 久久久久久美女| 91精品国产自产在线| 国产精品久久久久久久久久ktv| 国产精品日韩在线播放| 欧美激情精品久久久久久| 久久手机免费视频| 91日韩在线视频| 日韩免费视频在线观看| 国产日韩精品在线播放| 欧美极品少妇xxxxⅹ裸体艺术| 北条麻妃一区二区三区中文字幕| 欧美有码在线视频| 欧美日本在线视频中文字字幕| 国产精品永久在线| 啪一啪鲁一鲁2019在线视频| 亚洲人成电影网站| 日本a级片电影一区二区| 日韩精品欧美国产精品忘忧草| 激情久久av一区av二区av三区| 欧美成人全部免费| 视频一区视频二区国产精品| 51午夜精品视频| 中文字幕综合在线| 黄色精品一区二区| 91精品在线一区| 日本韩国在线不卡| 国产精品一区二区3区| 中文字幕亚洲欧美在线| 久久影院模特热| 久久国产精品电影| 精品动漫一区二区| 亚洲一区二区黄| 国产亚洲精品久久久久动| 国产一区二区欧美日韩| 精品久久久久久中文字幕一区奶水| 欧美在线观看一区二区三区| 91精品国产综合久久香蕉的用户体验| 久久99久久亚洲国产| 91久久嫩草影院一区二区| 精品高清美女精品国产区| 欧美中在线观看| 丝袜美腿精品国产二区| 亚洲美女视频网| 亚洲欧洲av一区二区| 国产精品麻豆va在线播放| 午夜精品久久久久久久白皮肤| 亚洲欧美三级在线| 国产精品私拍pans大尺度在线| 欧美成人激情视频| 精品一区电影国产| 国产成人精品优优av| 欧美激情视频在线免费观看 欧美视频免费一| 91九色单男在线观看| 日韩在线欧美在线国产在线| 亚洲视频免费一区| 日韩一区二区av| 精品免费在线视频| 26uuu亚洲国产精品| 激情亚洲一区二区三区四区| 久久久精品国产亚洲| 欧美精品激情blacked18| 国产婷婷色综合av蜜臀av| 国内揄拍国内精品少妇国语| 性色av一区二区三区| 成人黄色av网站| www欧美xxxx| 久久色免费在线视频| 一区二区三区在线播放欧美| 日产精品99久久久久久|