日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用XmlReader读Xml

發布時間:2024/9/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用XmlReader读Xml 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XmlDocument和XElement在讀取Xml時要將整個Xml文檔放到內存中去操作,這樣做操作簡單,但是很費內存和IO(可能是磁盤IO或者網絡IO);而在有些場景下我們必須考慮盡可能節省內存和IO的開銷,這時候就該

XmlReader和XMLWriter出場了

XmlReader讀取Xml需要通過Read()實例方法,不斷讀取Xml文檔中的聲明,節點開始,節點內容,節點結束,以及空白等等,直到文檔結束,Read()方法返回FALSE

如下讀取Xml內容實例代碼和注釋說明

using System; using System.Collection.Generic; using System.Text; using System.Xml; using System.IO; namespace UseXmlReader {class Program{static void Main(string[] args){//聲明StringReader傳入Xml文本,作為XMLReader.Create的參數using(StringReader strRdr=new StringReader(@"<?xml version=""1.0"" encoding=""utf-8""?><root><cat color=""white"">I'm a Cat</cat><dog color=""yellow""/> </root>")){//通過XMLReader.Create靜態方法創建XMLReader實例using (XmlReader rdr=XmlReader.Create(strRdr)){//循環Read方法直到文檔結束 white(rdr.Read()){Console.WriteLine("rdr.NodeType="+rdr.NodeType);//如果是開始節點if(rdr.NodeType==XmlNodeType.Element){//通過rdr.Name得到節點名string elementName=rdr.Name;Console.WriteLine(elementName+"element start");if(elementName=="root"){}//讀取到cat元素 這時rdr.Read()讀取到的內容為<cat color="white">else if(elementName="cat"){//可以通過中括號獲得屬性值string colorVal=rdr["color"];Console.WriteLine("\tcat's color is" +colorVal);//讀取到節點內文本內容if(rdr.Read()){//通過rdr.Value獲得文本內容Console.WriteLine("\t cat said:" +rdr.Value); } } }else if(rdr.NodeType==XmlNodeType.EndElement){//在節點結束時也可以通過rdr.Name獲得節點名字string elementName=rdr.Name;Console.WriteLine(elementName +"element end"); } } } }Console.Read(); } } }

如果覺得代碼不明白,下面是一張讀取順序圖,標明了讀取順序號和每次讀取的內容,如下圖所示:

從圖中可以看到XmlReader在讀取這段Xml時: 第1次Read()讀取的是Xml文檔聲明部分 第2次Read()讀取的是聲明后的空白 第3次Read()讀取的是根節點root的開始標簽 第4次Read()讀取的是根節點開始后的空白 第5次Read()讀取的是cat節點的開始部分,從左尖括號到右尖括號包括該節點的屬性 第6次讀取的是cat節點的內容 第7次讀取的是cat節點的結束標簽 第8次讀取的是cat節點結束標簽后的空白 第9次讀取的是dog節點的開始部分,注意是從左尖括號開始到結束斜杠之前 第10次讀取的是dog標簽的結束/> 第11次讀取的是dog標簽結束后的空白 第12次讀取的是root的結束標簽

感謝@Kingthy對文中消耗IO說法提出問題,XmlReader和XmlDocument消耗的IO是一樣的;不同的是XmlReader可以讀取一點,顯示一點,而XmlDocument必須完全讀入之后才可以開始處理。

?

轉載于:https://www.cnblogs.com/zzp0320/p/8287297.html

總結

以上是生活随笔為你收集整理的使用XmlReader读Xml的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。