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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#解析XML各种方法特点比较(转载)

發布時間:2025/4/14 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#解析XML各种方法特点比较(转载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XML(eXtensible Markup Language)是由萬維網協會(W3C)推出的新一代數據交換的標準。HTML是XML的先驅,XML延續了HTML的簡單性的優點。XML不是用來替代HTML的, XML和HTML為不同的目的而設計: XML被設計用來描述數據,其焦點是數據的內容。HTML被設計用來顯示數據,其焦點是數據的外觀。HTML旨在顯示信息,而XML旨在描述信息。

XML不是一種可執行的程序,它只是一種數據的載體,不過由于這種數據載體的格式簡單易懂,加上良好的擴充性能,使得XML的用處十分廣泛。從三大框架的各種配置文件到Ajax中的數據交換,再到Web Service的推行、SOA理念的應用等等,都離不開XML。

XML是一種簡單的數據格式,是100%的純ASCII文本,而ASCII的抗破壞力是很強的,從高級的角度看,是一種自描述語言。XML可用于數據交換,主要是因為XML表示的信息獨立于平臺,即不同的應用程序或者不同的操作系統。

在針對XML文檔的應用編程接口中,一般有兩種模型:W3C制定的DOM(Document Object Method,文檔對象模型)和流模型。流模型中有兩種變體——“推”模型(代表為由David Megginson領導的SAX—SimpleAPI for XML用于XML的簡單API)和“拉”模型(.NET中的流模型)。

1 “推”模型

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

2 “拉”模型

.NET中使用的是基于“拉”模型的實現方案。“拉”模型在遍歷文檔時會把感興趣的文檔部分從讀取器重拉出,不需要引發事件,允許我們以編程的方式訪問文檔,這大大的提高了靈活性,“拉”模型可以選擇性的處理節點。在.NET中,“拉”模型通過XML閱讀器(XML TextReader類)來實現的。該類提供XML文件讀取的功能,他可以驗證文檔是否格式良好,額如果不是格式良好的XML文檔,該類在讀取過程中將會拋出XmlException異常。任何時候再內存中子偶當前節點,但它是只讀的,向前的,不能再文檔中執行向后導航操作。

3 DOM

DOM的好處在于它允許編輯和更新XML文檔,可以隨機訪問文檔中的數據,可以使用Xpath查詢。但是DOM的缺點在于它需要一次性的加載整個文檔到內存中,對于大型的文檔,這會造成資源問題。在.NET中使用XML DOM解析器(XMLDocument)實現DOM模型。

因此,.NET Framework完全支持 XML DOM模式,但它不支持SAX模式。.NET Framework支持兩種不同的分析模式XML DOM分析器(XMLDocument類)和XML閱讀器(XMLTextReader類),不支持SAX分析器,但這并不意味著它沒有提供類似SAX分析器的功能。通過XML閱讀器可以將SAX的所有的功能很容易的實現及更有效的應用。

SAX和DOM在實現過程中,分別側重于不同的方面與滿足不同的應用需求。DOM為開發基于XML的應用系統提供了便利。它通過一種隨機訪問機制,使得應用程序利用該接口可以在任何時候訪問XML文檔中的任何一部分數據,也可以對XML文檔中的數據進行插入、刪除、修改、移動等操作。在DOM中,文檔的邏輯結構類似一棵樹。文檔、文檔中的根、元素、元素內容、屬性、屬性值等都是以對象模型的形式表示的。DOM的優點在于它在內存中保存文檔的整個模型。這使得能以任何順序訪問XML元素。然而,對于大型文檔來說,這樣做可能不方便。因為它可能會用盡內存,或者當系統達到了它的極限時,機器的性能將會慢下來。

SAX提供了一種對XML文檔進行順序訪問的模式,這是一種快速讀寫XML數據的方式。SAX接口是事件驅動的,當使用SAX分析器對XML文檔進行分析時,就會觸發一系列事件,并激活相應的事件處理函數,從而完成對XML文檔的訪問。SAX處理XML的方式與DOM不同。SAX解析器不是將DOM數解析和表現為輸出,它是基于事件的,所以在XML被解析時,事件被發送給引擎。SAX可以在文檔的開始接收事件,也可以接收文檔中的元素。使用這些事件可以構建一種結構。因為SAX沒有把XML文檔完全地加載到內存中,所以需要的系統資源較少,是一個分析大型XML文檔的高效API。缺點是編寫SAX比編寫DOM復雜,這因為首先必須實現通知接口并維護狀態,其次SAX不允許對文檔進行隨機訪問,也沒有提供像DOM那樣的修改功能。

比較而言,DOM和SAX各有自己的應用場合。DOM適用于處理下面的問題:解析比較小的XML文件;需要對文檔進行修改;需要隨機對文檔進行訪問。SAX適于處理下面的問題:對大型文檔進行處理;只需要文檔的部分內容;不需要從文檔中得到特點信息。

在System.XML名稱空間中組織進了以下幾個用于XML的類:

1?XMLTextReader—提供以快速、單向、無緩沖的方式存取XML數據。(單向意味著你只能從前往后讀取XML文件,而不能逆向讀取)

2?XMLValiddatingReader—與XMLTextReader類一起使用,提供驗證DTD、XDR和XSD構架的能力。

3? XMLDocument—遵循W3C文檔對象模型規范的一級和二級標準,實現XML數據隨機的、有緩存的存取。一級水平包含了DOM的最基本的部分,而二級水平增加多種改進,包括增加了對名稱空間和級連狀圖表(CSS)的支持。

4?XMLTextWriter—生成遵循W3C XML1.0規范的XML文件。

轉載于:https://www.cnblogs.com/leegiser/archive/2013/04/08/3008458.html

總結

以上是生活随笔為你收集整理的C#解析XML各种方法特点比较(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。

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