Spring OXM- 漫談XML解析技術(shù)
概述

XML解析技術(shù)漫談
認識XML
XMl的處理技術(shù)
概述
我們先從XML各種解析技術(shù)的發(fā)展歷程談起,并介紹一些主流 O/X Mapping組件的使用方法,比如XStream、Castor、JiBX、JAXB等。
從獨立使用到與Spring整合逐步演變,揭開各O/X Mapping組件的神秘面紗,根據(jù)需要選擇合適的O/X Mapping組件來處理對象XML之間的轉(zhuǎn)換,為開發(fā)WebService應(yīng)用打下良好的基礎(chǔ)。
XML解析技術(shù)漫談
認識XML
XML(Extensible Makup Language)可擴展標記語言,一組規(guī)則和準則的集合,用來描述結(jié)構(gòu)化數(shù)據(jù)。
為了驗證XML文檔是否和我們預計的格式保持一致,于是人們就逐步的提出了DTD和XML Schema。
DTD是一套關(guān)于標記符的語法規(guī)則,是XML1.0規(guī)范的一部分,是XML文件的驗證機制,屬于XML文件組成的一部分。
XML Schema指定XML Schema定義語言,很大程度上重構(gòu)了XML 1.0DTD的能力,并解決了DTD的許多局限性,比如不支持名稱空間,不支持對聲明的擴展和繼承等等。
XMl的處理技術(shù)
為了有效的使用XML,需要通過一個XML處理器或者XML API來訪問其數(shù)據(jù)。
目前JAXP1.6(JSR 206)的兩種處理XML文檔的方法已經(jīng)得到了廣泛的引用
DOM (Document Object Model)
SAX (Simple API for XML)
DOM文檔對象模型是一種通過編程方式對XML文檔中的乬及結(jié)構(gòu)進行訪問的標準,基于XML文檔再內(nèi)存中的樹狀結(jié)構(gòu), 當一個XML文件被裝入處理器時,內(nèi)存中建立一顆相應(yīng)的樹。
DOM還定義了用來遍歷一個XML樹及管理各個元素、值和屬性的編程接口。
DOM的缺點:在將整個XML文檔裝入內(nèi)存所引起的巨大的內(nèi)存開銷,當文件的數(shù)據(jù)量非常大時,這個會帶來很大的性能瓶頸。
于是人們開始創(chuàng)立一種新的標準,這就是SAX。
SAX是一種非常簡單的XML API,它允許開發(fā)者使用事件驅(qū)動的XML解析。 與DOM不同的是,SAX并不要求將整個XML文件一起裝入內(nèi)存。 而是一旦XML 處理器完成對XML元素的操作,它就like調(diào)用一個自定義事件處理器及時處理這個元素及相關(guān)數(shù)據(jù)。
雖然SAX解決了DOM速度慢,內(nèi)存占用大的問題,但是靈活性上受到了很大的限制,比如無法隨機訪問文檔。
于是又有一種新的基于流的Stream API for XML (簡稱StAX),它不僅提供了XML的處理速度,而且較好的兼顧了靈活性。 StAX是JSR 173標準,目前已經(jīng)加入Java 6.0的JAXP 1.4里面。
DOM 、SAX、StAX技術(shù)都是從XML的角度來處理文檔和建立模型,這對于只關(guān)注文檔XML結(jié)構(gòu)應(yīng)用程序來說是適用的,但是很多應(yīng)用程序僅僅將XML作為數(shù)據(jù)交換的媒介,更多的關(guān)注的是文檔數(shù)據(jù)本身,為此人們又提出了一種XML數(shù)據(jù)綁定技術(shù),可以忽略XML文檔的實際結(jié)構(gòu),而直接使用文檔的數(shù)據(jù)內(nèi)容,比如Castor、JAXB、JiBX、Qucik和Zeus等。
Java Spring XML
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。