国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#流模型詳細分析

開發 后端
這里介紹C#流模型每次迭代XML文檔中的一個節點,適合于處理較大的文檔,所耗內存空間小。流模型中有兩種變體——“推”模型和“拉”模型。

在向大家詳細介紹C#流模型之前,首先讓大家了解下在C#中如何使用XML,然后全面介紹C#流模型。

對于XML,想必各位都比較了解,我也就不用費筆墨來描述它是什么了,我想在未來的Web開發中XML一定會大放異彩,XML是可擴展標記語言,使用它企業可以制定一套自己的數據格式,數據按照這種格式在網絡中傳輸然后再通過XSLT將數據轉換成用戶期望的樣子表示出來,這樣便輕易的解決了數據格式不兼容的問題。用于Internet的數據傳輸,我想,這是XML對于我們這些程序員最誘人的地方!

我們今天的主題不是論述XML的好處,而是討論在C#中如何使用XML。下面我們來了解一下使用程序訪問XML的一些基礎理論知識。

訪問的兩種模型:

在程序中訪問進而操作XML文件一般有兩種模型,分別是使用DOM(文檔對象模型)和流模型,使用DOM的好處在于它允許編輯和更新XML文檔,可以隨機訪問文檔中的數據,可以使用XPath查詢,但是,DOM的缺點在于它需要一次性的加載整個文檔到內存中,對于大型的文檔,這會造成資源問題。流模型很好的解決了這個問題,因為它對XML文件的訪問采用的是流的概念,也就是說,任何時候在內存中只有當前節點,但它也有它的不足,它是只讀的,僅向前的,不能在文檔中執行向后導航操作。雖然是各有千秋,但我們也可以在程序中兩者并用實現優劣互補嘛,呵呵,這是題外話了!我們今天主要討論XML的讀取,那我們就詳細討論一下C#流模型吧!

C#流模型中的變體:

C#流模型每次迭代XML文檔中的一個節點,適合于處理較大的文檔,所耗內存空間小。流模型中有兩種變體——“推”模型和“拉”模型。

推模型也就是常說的SAX,SAX是一種靠事件驅動的模型,也就是說:它每發現一個節點就用推模型引發一個事件,而我們必須編寫這些事件的處理程序,這樣的做法非常的不靈活,也很麻煩。

.NET中使用的是基于“拉”模型的實現方案,“拉”模型在遍歷文檔時會把感興趣的文檔部分從讀取器中拉出,不需要引發事件,允許我們以編程的方式訪問文檔,這大大的提高了靈活性,在性能上“拉”模型可以選擇性的處理節點,而SAX每發現一個節點都會通知客戶機,從而,使用“拉”模型可以提高Application的整體效率。在.NET中“拉”模型是作為XmlReader類實現的,下面看一下該類的繼承結構:

我們今天來講一下該體系結構中的XmlTextReader類,該類提供對Xml文件進行讀取的功能,它可以驗證文檔是否格式良好,如果不是格式良好的 Xml文檔,該類在讀取過程中將會拋出XmlException異常,可使用該類提供的一些方法對文檔節點進行讀取,篩選等操作以及得到節點的名稱和值,請牢記:XmlTextReader是基于C#流模型的實現,打個不恰當的比喻,XML文件就好象水源,閘一開水就流出,流過了就流過了不會也不可以往回流。內存中任何時候只有當前節點,你可以使用 XmlTextReader類的Read()方法讀取下一個節點。好了,說了這么多來看一個例子,編程要注重實際對吧。看代碼前先看下運行效果吧!

Example1按紐遍歷文檔讀取數據,Example2,Example3按紐得到節點類型,Example4過濾文檔只獲得數據內容,Example5得到屬性節點,Example6按紐得到命名空間,Example7顯示整個XML文檔,為此,我專門寫一個類來封裝以上功能,該類代碼如下:

  1. namespace XMLReading  
  2. {  
  3. using System;  
  4. using System.Xml;  
  5. using System.Windows.Forms;  
  6. using System.ComponentModel;  
  7.  
  8. /// <summary>  
  9. /// Xml文件讀取器  
  10. /// </summary>  
  11.  
  12. public class XmlReader : IDisposable  
  13. {  
  14. private string _xmlPath;  
  15. private const string _errMsg = "Error Occurred While Reading ";  
  16. private ListBox _listBox;  
  17. private XmlTextReader xmlTxtRd;  
  18.  
  19. #region XmlReader 的構造器  
  20.  
  21. public XmlReader()  
  22. {  
  23. this._xmlPath = string.Empty;  
  24. this._listBox = null;  
  25. this.xmlTxtRd = null;  
  26. }  
  27.  
  28. /// <summary>  
  29. /// 構造器  
  30. /// </summary>  
  31. /// <param name="_xmlPath">xml文件絕對路徑</param>  
  32. /// <param name="_listBox">列表框用于顯示xml</param>  
  33.  
  34. public XmlReader(string _xmlPath, ListBox _listBox)  
  35. {  
  36. this._xmlPath = _xmlPath;  
  37. this._listBox = _listBox;  
  38. this.xmlTxtRd = null;  
  39. }  
  40.  
  41. #endregion  
  42. #region XmlReader 的資源釋放方法  
  43.  
  44. /// <summary>  
  45. /// 清理該對象所有正在使用的資源  
  46.  
  47. /// </summary>  
  48.  
  49. public void Dispose()  
  50. {  
  51. this.Dispose(true);  
  52. GC.SuppressFinalize(this);  
  53. }  
  54.  
  55. /// <summary>  
  56. /// 釋放該對象的實例變量  
  57. /// </summary>  
  58. /// <param name="disposing"></param>  
  59.  
  60. protected virtual void Dispose(bool disposing)  
  61. {  
  62. if (!disposing)  
  63. return;  
  64. if (this.xmlTxtRd != null)  
  65. {  
  66. this.xmlTxtRd.Close();  
  67. this.xmlTxtRd = null;  
  68. }  
  69.  
  70. if (this._xmlPath != null)  
  71. {  
  72. this._xmlPath = null;  
  73. }  
  74. }  
  75.  
  76. #endregion  
  77. #region XmlReader 的屬性  
  78.  
  79. /// <summary>  
  80. /// 獲取或設置列表框用于顯示xml  
  81. /// </summary>  
  82.  
  83. public ListBox listBox  
  84. {  
  85. get  
  86. {  
  87. return this._listBox;  
  88. }  
  89. set  
  90. {  
  91. this._listBox = value;  
  92. }  
  93. }  
  94.  
  95. /// <summary>  
  96. /// 獲取或設置xml文件的絕對路徑  
  97. /// </summary>  
  98.  
  99. public string xmlPath  
  100. {  
  101. get  
  102. {  
  103. return this._xmlPath;  
  104. }  
  105. set  
  106. {  
  107. this._xmlPath = value;  
  108. }  
  109. }  
  110.  
  111. #endregion  
  112.  
  113. /// <summary>  
  114. /// 遍歷Xml文件  
  115. /// </summary>  
  116.  
  117. public void EachXml()  
  118. {  
  119. this._listBox.Items.Clear();  
  120. this.xmlTxtRd = new XmlTextReader(this._xmlPath);  
  121.  
  122. try  
  123. {  
  124. while(xmlTxtRd.Read())  
  125. {  
  126. this._listBox.Items.Add(this.xmlTxtRd.Value);  
  127. }  
  128. }  
  129. catch(XmlException exp)  
  130. {  
  131. throw new XmlException(_errMsg + this._xmlPath + exp.ToString());  
  132. }  
  133. finally  
  134. {  
  135. if (this.xmlTxtRd != null)  
  136. this.xmlTxtRd.Close();  
  137. }  
  138. }  
  139.  
  140. /// <summary>  
  141. /// 讀取Xml文件的節點類型  
  142. /// </summary>  
  143.  
  144. public void ReadXmlByNodeType()  
  145. {  
  146. this._listBox.Items.Clear();  
  147. this.xmlTxtRd = new XmlTextReader(this._xmlPath);  
  148.  
  149. try  
  150. {  
  151. while(xmlTxtRd.Read())  
  152. {  
  153. this._listBox.Items.Add(this.xmlTxtRd.NodeType.ToString());  
  154. }  
  155. }  
  156. catch(XmlException exp)  
  157. {  
  158. throw new XmlException(_errMsg + this._xmlPath + exp.ToString());  
  159. }  
  160. finally  
  161. {  
  162. if (this.xmlTxtRd != null)  
  163. this.xmlTxtRd.Close();  
  164. }  

【編輯推薦】

  1. C#方法重寫全面介紹
  2. C#流程控制語句簡單描述
  3. Java和C#字符串類型概述
  4. C#訪問修飾符詳細剖析
  5. 選擇C#構造函數描述
責任編輯:佚名 來源: 博客園
相關推薦

2009-09-07 13:19:44

C#線程同步

2009-09-03 17:57:06

C#聲明事件

2009-09-07 14:18:01

C#內存管理

2009-09-14 13:50:35

LINQ編程模型

2009-08-10 17:34:42

C#數據庫連接池

2009-09-28 10:39:01

Hibernate基礎

2009-09-25 14:23:39

2009-11-20 13:11:44

Oracle XML數

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew

2009-09-09 09:48:43

Linq延遲加載

2009-10-10 13:52:57

VB Update方法

2009-09-14 16:21:34

LINQ To XML

2009-06-18 14:00:51

2010-04-26 18:17:19

Oracle存儲過程

2009-12-07 15:37:00

WCF控件

2009-12-16 14:09:14

Visual Stud

2011-09-24 12:34:03

2009-03-24 08:30:54

AndroidGoogle移動os

2009-12-03 17:41:40

PHP應用發展
點贊
收藏

51CTO技術棧公眾號

fc2成人免费人成在线观看播放| 日韩国产在线一| 天天亚洲美女在线视频| 亚洲春色综合另类校园电影| 天堂精品在线视频| 一本到不卡精品视频在线观看| 国产乱码字幕精品高清av | 国产一区二区影院| 欧美中文字幕一二三区视频| 97在线观看免费| 亚洲激情视频在线观看| 91高清视频免费观看| 亚州色图欧美色图| 日韩av电影免费观看高清完整版| 国产小视频国产精品| 中国日本在线视频中文字幕| 麻豆一区在线| 欧美精品一区男女天堂| 三级在线观看| 亚洲欧美国产三级| 国产精品一二区| 神马伦理电影| 国产一区三区在线播放| 亚洲mv在线观看| 日本新janpanese乱熟| 欧美激情极品| 亚洲欧美激情精品一区二区| 国产婷婷视频在线| 91久久线看在观草草青青| 青娱在线视频| 亚洲一区二区高清| 日本中文字幕视频| 亚洲精品国产无天堂网2021| 9l视频白拍9色9l视频| 青青草91久久久久久久久| 欧美精品免费在线观看| 中文av一区二区三区| 成人久久久精品乱码一区二区三区| 日韩一区二区三区在线视频| 在线中文字幕资源| 老色鬼久久亚洲一区二区| 91在线观看免费观看| www.中文字幕久久久| 三级欧美在线一区| 国产综合欧美在线看| 91久久国产综合久久91猫猫| 精品国产乱码久久久久久蜜臀 | 国产欧美日韩精品在线观看| 青青在线精品| 欧美日韩国产高清一区二区三区 | jizzzz日本| 欧美激情一区不卡| sm一区二区三区| 久久久久久国产三级电影| 久久久加勒比| 欧美高清一级大片| 色橹橹欧美在线观看视频高清| 欧美性受xxx| 亚洲激情久久| 久久国产精品亚洲va麻豆| 日韩成人精品在线| 在线观看污视频| 91免费小视频| 黄色网战入口| 欧美午夜激情小视频| 色网站在线看| 精品视频一区在线视频| 久久九九精品视频| 国产精品久久久精品| 在线看片欧美| 嫩草影院中文字幕| 免费成人av| 国产美女久久精品| 亚洲视频成人| 91av在线播放视频| 国产高清一区二区| 日韩中文综合网| 国产精品玖玖玖在线资源| 国产男人精品视频| 日韩不卡一区二区三区 | 色偷偷88欧美精品久久久| 在线中文字幕-区二区三区四区| 亚洲国产精品黑人久久久| 国产真实伦在线观看| 精品一区二区三区在线视频| www一区二区www免费| 一区二区三区美女| www在线视频| 欧美激情视频免费观看| 欧美日韩四区| 日韩av免费在线观看| 欧美特黄aaaaaaaa大片| 97精品一区二区三区| 亚洲精选91| 欧美亚洲精品一区二区| 午夜视频久久久久久| 澳门成人av网| 国产精品美女久久久久av超清| 亚洲综合丁香| 国产综合色香蕉精品| 男女男精品视频网| 999精品视频一区二区三区| 日本不卡一区二区三区 | 在线一区电影| 久久久国内精品| 欧美三级免费观看| 丝袜美腿一区| 国产日韩欧美中文在线播放| 韩国精品在线观看| 在线视频您懂的| 少妇高潮久久久久久潘金莲| 亚洲永久免费观看| 欧美精品一区在线观看| 国产精品综合在线视频| 国产精品观看| 日本大片在线播放| 国产精品毛片| 久久综合九色| 1024手机看片国产| 亚洲免费电影在线观看| 91精品国产乱码久久久久久久 | 国产欧美中文在线| av网站在线免费| 国产精品免费在线免费| 成人av第一页| 手机电影在线观看| 综合色中文字幕| 日本不卡网站| 中文字幕av一区二区三区谷原希美| 国产成人一二三区| 99精品热视频只有精品10| 欧美xxxx18| www.欧美免费| 精品亚洲免费视频| 怡红院av在线| 久99久视频| 色狠狠色噜噜噜综合网| 欧美激情在线精品一区二区三区| 成人午夜精品久久久久久久蜜臀| 精品国产sm最大网站| 国产日韩欧美一区| 午夜伦全在线观看| 国产精品一区二区三区在线 | xxxx性欧美| 捆绑调教一区二区三区| 亚洲aaaaaa| 天天综合日日夜夜精品| 国产探花一区二区| h精品动漫在线观看| 欧美自拍视频在线| 国产精品久久国产精麻豆99网站| a视频免费看| 欧美激情xxxxx| 久久久久国产精品厨房| 四虎在线精品| 亚洲 高清 成人 动漫| 久久精品视频在线观看| 2023国产一二三区日本精品2022| 亚洲五月天综合| 亚洲欧美国内爽妇网| 久久爱另类一区二区小说| 四虎精品成人免费网站| 国产精品成人av性教育| 一区二区三区精品在线观看| 成人在线免费小视频| 色网视频在线| 国产精品久久久久久久免费大片| 欧美性极品xxxx做受| 雨宫琴音一区二区在线| 国产三区在线观看| 亚洲一区3d动漫同人无遮挡| 国产视频欧美视频| 久久只精品国产| 伊人久久大香线蕉| 青梅竹马是消防员在线| 欧美在线日韩精品| 中文精品99久久国产香蕉| 国产精品人人做人人爽人人添| 国产成人精品一区二区免费看京| 深夜福利视频在线观看| 日本在线观看不卡| 久久精品国产96久久久香蕉| 一区二区三区四区在线播放| 91久久亚洲| 日韩三区免费| 老司机aⅴ毛片免费观看| 粉嫩av一区二区三区免费观看 | 日本一二区视频| 国产精品.com| 亚洲免费一在线| 亚洲欧美色一区| 99热在线精品观看| 日本精品另类| 天堂男人av| 青青草成人网| 欧美第一页在线| 91久久免费观看| 成人午夜视频在线| 成人同人动漫免费观看| 96av在线|