DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 在.NET Framework中輕松處理XML數據(一)
在.NET Framework中輕松處理XML數據(一)
編輯:XML基礎     
在.NET Framework中,XmlTextReader和XmlTextWriter類提供了對xml數據的讀和寫操作。在本文中,作者講述了XML閱讀器(Reader)的體系結構及它們怎樣與XMLDOM 和SAX 解釋器結合。作者也演示了怎麼樣運用閱讀器分析和驗證XML文檔,怎麼樣創建格式良好的XML文檔,以及怎麼樣用函數讀/寫基於Base64和BinHex編碼的大型的XML文檔。最後,作者講了怎麼樣實現一個基於流的讀/寫分析器,它把讀寫器都封裝在一個單獨的類裡。

大概三年前,我參加了一個軟件研討會,主題是“沒有XML,就沒有編程的未來”。XML確實也在一步一步的發展,它已經嵌入到. NET Framework中了。在本文中,我將講解. NET Framework中用於處理XML文檔的API的角色和它的內部特性,然後我將演示一些常用的功能。

從MSXML到.net的XML

在. NET Framework出現之前,你習慣使用MSXML服務----一個基於COM的類庫---寫windows的XML的驅動程序。不像. NET Framework中的類,MSXML類庫的部分代碼比API更深,它完全的嵌在操作系統的底層。MSXML的確能夠與你的應用程序通信,但是它不能真正的與外部環境結合。

MSXML類庫能在win32中被導入,也能在CLR中運用,但它只能作為一個外部服務器組件使用。但是基於.NET Framework的應用程序能直接的用XML類與.NET Framework 的其它命名空間整合使用,並且寫出來的代碼易於閱讀。

作為一個獨立的組件,MSXML分析器提供了一些高級的特性如異步分析。這個特性在.NET Framework中的XML類及.NET Framework的其它類都沒有提供,但是,NET Framework中的XML類與其它的類整合可以很輕易的獲得相同的功能,在這個基礎上你可以增加更多的功能。

.NET Framework中的XML類提供了基本的分析、查詢、轉換XML數據的功能。在.NET Framework中,你可以找到支持Xpath查詢和XSLT轉換的類,及讀/寫XML文檔的類。另外,.NET Framework也包含了其它處理XML的類,例如對象的序列化(XmlSerializer和the SoapFormatter類),應用程序配置(AppSettingsReader類),數據存儲(DataSet類)。在本文中,我只討論實現基本XML I/O操作的類。

XML分析模式

既然XML是一種標記語言,就應該有一種工具按一定的語法來分析和理解存儲在文檔中信息。這個工具就是XML分析器---一個組件用於讀標記文本並返回指定平台的對象。

所有的XML分析器,不管它屬於哪個操作平台,不外乎都分以下的兩類:基於樹或者基於事件的處理器。這兩類通常都是用XMLDOM(the Microsoft XML Document Object Model)和SAX(Simple API for XML)來實現。XMLDOM分析器是一個普通的基於樹的API---它把XML文檔當成一個內存結構樹呈現。SAX分析器是基於事件的API----它處理每個在XML數據流中的元素(它把XML數據放進流中再進行處理)。通常,DOM能被一個SAX流載入並執行,因此,這兩類的處理不是相互排斥的。

總的來說,SAX分析器與XMLDOM分析器正好相反,它們的分析模式存在著極大的差別。XMLDOM被很好的定義在它的functionalition集合裡面,你不能擴展它。當它在處理一個大型的文檔時,它要占用很大內存空間來處理functionalition這個巨大的集合。

SAX分析器利用客戶端應用程序通過現存的指定平台的對象的實例去處理分析事件。SAX分析器控制整個處理過程,把數據“推出”到處理程序,該處理程序依次接受或拒絕處理數據。這種模式的優點是只需很少的內存空間。

.NET Framework完全支持XMLDOM模式,但它不支持SAX模式。為什麼呢?因為.NET Framework支持兩種不同的分析模式:XMLDOM分析器和XML閱讀器。它顯然不支持SAX分析器,但這並不意味它沒有提供類似SAX分析器的功能。通過XML閱讀器SAX的所有的功能都能很容易的實現及更有效的運用。不像SAX分析器,.NET Framework的閱讀器整個都運作在客戶端應用程序下面。這樣,應用程序本身就可以只把真正需要的數據“推出”,然後從XML數據流中跳出來。而SAX分析模式要處理所有的對應用程序有用和無用的信息。

閱讀器是基於.NET Framework流模式工作的,它的工作方式類似於數據庫的游標。有趣的是,實現類似游標分析模式的類提供對.NET Framework中的XMLDOM分析器的底層支持。XmlReader、XmlWriter兩個抽象類是所有.NET Framework中XML類的基礎類,包括XMLDOM類、ADO.NET驅動類及配置類。所以在.NET Framework中你有兩種可選的方法去處理XML數據。用XmlReader和XmlWriter類直接處理XML數據,或者用XMLDOM模式處理。更多的關於在.NET Framework中讀文檔的介紹可以參見MSDN 2002 年八月刊的Cutting Edge欄目文章。

XmlReader類

XML閱讀器支持一個編程接口,接口用於連接XML文檔,“推出”你要的數據。如果你更深入去了解閱讀器,你會發現閱讀器工作原理類似於我們的桌面應用程序從數據庫中取出數據的原理。數據庫服務返回一個游標對象,它包含所有查詢結果集,並返回指向目標數據集的開始地址的引用。XML閱讀器的客戶端收到一個指向閱讀器實例的引用。該實例提取底層的數據流並把取出的數據呈現為一棵XML樹。閱讀器類提供只讀、向前的游標,你可以用閱讀器類提供的方法滾動游標遍歷結果集中的每一條數據。

從閱讀器中看XML文檔不是一個標簽文本文件,而是一個序列化的節點集合。它是.NET Framework中的一種特殊的游標模式;在.NET Framework中,你找不到其它的任何一個類似的API函數。

閱讀器和XMLDOM分析器有幾點不同的地方。XML閱讀器是只進的,它沒有父、子、祖宗、兄弟節點的概念,而且是只讀的。在.NET Framework中,讀寫XML文檔是分為兩種完全不同的功能,分別由XmlReader和XmlWriter類來完成。要編輯XML文檔,你可以用XMLDOM分析器,或者你自己設計一個類來實現這兩種功能。讓我們開始分析閱讀器的程序功能。

XmlReader是一個抽象類,你可

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved