[摘要] XML是一種描述型的可擴展標記語言,Web上數(shù)據(jù)交換和表達的標準形式。本文詳細闡述了XML在數(shù)據(jù)庫方面數(shù)據(jù)存儲的應(yīng)用及.NET中配置信息存儲的具體實現(xiàn)。
[關(guān)鍵詞] XML NXD 配置文件 序列化
數(shù)據(jù)庫技術(shù)及其應(yīng)用系統(tǒng)的發(fā)展,使得其在傳統(tǒng)的商業(yè)和事務(wù)處理領(lǐng)域內(nèi)逐步成熟,取代了原有的基于文件系統(tǒng)的數(shù)據(jù)處理方式,成為計算機信息系統(tǒng)中的重要基礎(chǔ)和支柱。但隨著Internet的飛速發(fā)展,Web的出現(xiàn)改變了人們習慣的處理方式,也給數(shù)據(jù)庫技術(shù)提出了必須面對的重要問題,即如何有效地存儲和管理Web上的數(shù)據(jù)(文檔),用XML可使其既能被高效地操作和維護,又能在Internet平臺上方便地表示和交換。對于.NET框架中的配置信息,利用XML可以方便的保存。
一、XML簡介
XML(eXtensible Markup Language)是一種描述型的標記語言,與HTML同為SGML(標準通用標記語言,ISO-8879國際標準)的一種應(yīng)用。由于XML在可擴展性、可移植性和結(jié)構(gòu)性等方面的突出優(yōu)點,它的應(yīng)用范圍突破了HTML所達到的范圍。
XML文檔由標記和內(nèi)容組成。XML中有六種標記:元素(elements)、屬性(attributes)、實體引用(entityreferences)、注釋(comments)、處理指令(processinginstructions)和CDATA段(CDATAsections)。XML與HTML最顯著的不同是XML文檔中引入了“文檔類型聲明”(Document Type Definition)。DTD使文檔可以與分析器交流關(guān)于它的內(nèi)容的元信息。DTD的出現(xiàn),賦予了XML文檔可擴展性、結(jié)構(gòu)性和可驗證性,使XML具備了類似于數(shù)據(jù)庫的一些性質(zhì),可以利用XML來組織和管理信息;又可以與HTML一樣在瀏覽器中方便地表示,在Internet上高效地傳遞和交換。
目前,處理XML文檔的方式主要有SAX與DOM兩種。SAX(Simple API for XML)是一種基于流的、以事件處理方式工作的接口。DOM(Document Object Model)則是在對XML文檔進行分析后,在內(nèi)存中建立起一個完整的樹結(jié)構(gòu),然后在此基礎(chǔ)上進行各種操作。簡單地比較來看,SAX對系統(tǒng)資源要求低、速度快,但對文檔的操作是只讀的;DOM的處理能力強大,但要求大量的系統(tǒng)資源,尤其是對于大的文檔。而后還出現(xiàn)了Xpath和Xpointer用以完成XML的搜索和轉(zhuǎn)換;XSL、XSLT和SOAP用以完成XML的遠程對象訪問,XML Query Languages的出現(xiàn)使XML查詢語言可用于任何XML文檔。
二、利用XML存儲數(shù)據(jù)庫數(shù)據(jù)
數(shù)據(jù)庫技術(shù)的應(yīng)用是建立在數(shù)據(jù)庫管理系統(tǒng)基礎(chǔ)上的,各數(shù)據(jù)庫管理系統(tǒng)之間的異構(gòu)性及其所依賴操作系統(tǒng)的異構(gòu)性,嚴重限制了信息共享和數(shù)據(jù)交換范圍;數(shù)據(jù)庫技術(shù)的語義描述能力差,大多通過技術(shù)文檔表示,很難實現(xiàn)數(shù)據(jù)語義的持久性和傳遞性,而數(shù)據(jù)交換和信息共享都是基于語義進行的,在異構(gòu)應(yīng)用數(shù)據(jù)交換時,不利于計算機基于語義自動進行正確數(shù)據(jù)的檢索與應(yīng)用。而隨著網(wǎng)絡(luò)和Internet的發(fā)展,數(shù)據(jù)交換的能力已成為新的應(yīng)用系統(tǒng)的一個重要的要求。
XML文件是數(shù)據(jù)的集合,它是自描述的、可交換的,能夠以樹型或圖形結(jié)構(gòu)描述數(shù)據(jù)。XML提供了許多數(shù)據(jù)庫所具備的工具:存儲(XML文檔)、模式(DTD,XML schema等)、查詢語言(XQuery,XPath,XQL,XML-QL,QUILT等)、編程接口(SAX,DOM,JDOM)等。
利用XML除可以將文件存儲于文件系統(tǒng)外,在數(shù)據(jù)庫文件存儲方面還有兩種形式:一、將文件存儲于BLOB(Storing Documents in BLOBs),利用數(shù)據(jù)庫的事務(wù)管理、安全、多用戶訪問等優(yōu)點。此外許多關(guān)系數(shù)據(jù)庫提供的檢索工具可以進行全文檢索、近似檢索、同義詞檢索和模糊檢索。其中某些工具將會支持XML,這樣就可消除將XML文件作為純文本檢索所帶來的問題。二、將文件存儲于原生XML數(shù)據(jù)庫(Native XML Databases,NXD)。NXD是專用于存儲XML文件的數(shù)據(jù)庫,支持事務(wù)管理、安全、多用戶訪問、編程API和查詢語言等。與其他數(shù)據(jù)庫的惟一區(qū)別在于其內(nèi)部模型是基于XML的。其中,最重要的存儲方式當屬原生XML數(shù)據(jù)庫。NXD最適于存儲以文檔為中心的文件,NXD一般采用層次數(shù)據(jù)存儲模型,保持XML文檔的樹形結(jié)構(gòu),省掉了XML文檔和傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換過程。
XML技術(shù)的出現(xiàn),使數(shù)據(jù)處理從文件方式到數(shù)據(jù)庫系統(tǒng)再到文件方式的循環(huán),但新的文件方式已經(jīng)與最初的文件系統(tǒng)有了本質(zhì)的區(qū)別格式化文檔。
三、利用XML存儲.NET中配置信息
NET框架提供了很多方法來維護應(yīng)用程序?qū)S玫呐渲脭?shù)據(jù)。雖然ASP.NET和Windows Forms應(yīng)用程序有與編程模塊相關(guān)聯(lián)的專門配置文件,但是你可以很輕易就利用XML的優(yōu)勢來保存和維護配置信息。
首先把需要存儲的文件對象進行序列化。對象序列化指讓一個原本存在于內(nèi)存中的對象變成一個線性字節(jié)序列,這樣可以方便地把它存儲或傳輸?shù)搅硪粋€位置。也就是說,可以把原來只在內(nèi)存中的對象存到硬盤中,也可以把它們通過網(wǎng)絡(luò)傳輸出去。與序列化相對的過程,稱作反序列化。它的任務(wù)是把一個序列化了的對象恢復(fù)到它在內(nèi)存中的原樣,以使程序可以運行。.NET框架為序列化的對象提供了各種不同的命名空間。要對一個對象進行序列化,需要用到System.Runtime.Serialization這個命名空間,并且用[Serializable]屬性來標記這個對象,或者需要實現(xiàn)Iserializable接口。 因此需通過加入Serializable屬性創(chuàng)建了一個Serializable(可序列化)的Config文件。
其次確定保存位置。使用XML來保存配置數(shù)據(jù)文件是非常理想的,但是一個重要的問題是決定把已經(jīng)完成序列化的文件保存在哪里。一個選擇是像SQL服務(wù)器這樣的后端數(shù)據(jù)庫。在這里,建議把應(yīng)用程序數(shù)據(jù)保存在下面這三個能夠用System.Environment類訪問得到的位置,這些目錄都可以通過使用下面這三個值調(diào)用GetFolderPath方法訪問到:
Environment.SpecialFolder.ApplicationData:這是當前用戶的目錄,網(wǎng)絡(luò)上所有的機器都可以共享到。
Environment.SpecialFolder.CommonApplicationData:這個保存信息的目錄可以由所有機器上的所有用戶都共享得到。
Environment.SpecialFolder.LocalApplicationData:這個目錄只能夠由登錄到本機的當前用戶訪問得到。
至此配置文件得以比較穩(wěn)妥的存儲。
四、結(jié)語
XML技術(shù)自出現(xiàn)以來發(fā)展非常迅速,不僅在數(shù)據(jù)管理和存儲方面,在許多其他領(lǐng)域內(nèi)也得到廣泛的支持,有著廣闊的應(yīng)用前景。許多應(yīng)用方面都將XML作為一種基礎(chǔ)性、支柱性的技術(shù)來看待。
參考文獻:
[1]黃健斌嚴體華:網(wǎng)絡(luò)計算.西安電子科技大學(xué)出版社,2004
[2]蔣直泉Visual Basic:NET程序設(shè)計. 地質(zhì)出版社, 2006
[3]秦健李世祥:WEB前臺設(shè)計教程. http://www.neusoft.com.