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