内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

spring如何使用OXM進(jìn)行對(duì)象XML映射解析-創(chuàng)新互聯(lián)

小編給大家分享一下spring如何使用OXM進(jìn)行對(duì)象XML映射解析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目前創(chuàng)新互聯(lián)建站已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、長(zhǎng)寧網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

1、認(rèn)識(shí)XML解析技術(shù)

1.1、XML相關(guān)概念

(1)DTD:XML語(yǔ)法規(guī)則,是XML文件的驗(yàn)證機(jī)制,可以通過(guò)比較XML文檔和DTD文件看文檔是否符合規(guī)范,元素和標(biāo)簽是否使用正確。

(2)XML是SOA的基礎(chǔ)。

1.2、XML處理技術(shù)

(1)為了使用XML,我們需要通過(guò)XML處理器或XMLAPI來(lái)訪問(wèn)數(shù)據(jù),目前JAXP提供了2種處理XML的方法:DOM和SAX。

①DOM:DOM通過(guò)編程方式對(duì)XML文檔中數(shù)據(jù)及結(jié)構(gòu)進(jìn)行訪問(wèn),基于XML文檔在內(nèi)存中的樹狀結(jié)構(gòu)。其缺點(diǎn)是將整個(gè)XML文檔裝入內(nèi)存需要很大開(kāi)銷。

②SAX:基于事件驅(qū)動(dòng),用到一段解析一段,解決了DOM占用內(nèi)存大的問(wèn)題,但其缺點(diǎn)是無(wú)法隨機(jī)訪問(wèn)文檔。

(2)為了解決DOM和SAX的問(wèn)題,一種基于流的StreamAPIforXML(簡(jiǎn)稱StAX)出現(xiàn)了,目前已加入到JDK6的JAXP1.4里面,StAX也是基于事件驅(qū)動(dòng)。

(3)DOM、SAX和StAX都是從文檔結(jié)構(gòu)出發(fā)處理XML的,但很多應(yīng)用程序僅僅關(guān)注文檔數(shù)據(jù)本身,所以XML數(shù)據(jù)綁定技術(shù)應(yīng)運(yùn)而生。

數(shù)據(jù)綁定:是指將數(shù)據(jù)從存儲(chǔ)媒介(XML文檔和數(shù)據(jù)庫(kù)中)抽取出來(lái),并通過(guò)程序表示這些數(shù)據(jù)的過(guò)程,即把數(shù)據(jù)綁定到虛擬機(jī)能夠理解并且可以操作的某種內(nèi)存結(jié)構(gòu)中。

XML綁定框架:Castor,JAXB,JiBX,Quick,Zeus等。

2、XML處理利器:XStream

2.1、XStream概述

(1)XStream是一套簡(jiǎn)潔易用的開(kāi)源框架,用于將Java對(duì)象序列化為XML,或者將XML反序列化為Java對(duì)象。XStream主要特點(diǎn):

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

(2)XStream架構(gòu)組成:

Converters(轉(zhuǎn)換器):當(dāng)XStream遇到需要轉(zhuǎn)換的對(duì)象時(shí),它會(huì)委派給合適的轉(zhuǎn)換器實(shí)現(xiàn)。

IO(輸入/輸出):XStream是通過(guò)HierarchicalStreamWriter和HierarchicalStreamReader從底層X(jué)ML數(shù)據(jù)中抽象而來(lái),分別用于序列化和反序列化操作。

Context(上下文):XStream序列化反序列化對(duì)象時(shí)會(huì)創(chuàng)建2個(gè)類MarshallingContext和UnmarshallingContext,由塔門來(lái)處理數(shù)據(jù)并委派給合適的轉(zhuǎn)換器。

Facade(統(tǒng)一入口):將上面的3點(diǎn)集成在一起,以統(tǒng)一的接口開(kāi)放給用戶使用。

2.2、快速入門

(1)創(chuàng)建一個(gè)XStream,并指定XML解析器

XStreamxstream=newXStream(newDomDriver());

如果不指定解析器,XStream會(huì)默認(rèn)采用XPP(XMLPullParser)解析器,XPP是一種高速解析器。

(2)示例如下:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

2.3、使用XStream別名

(1)在上面的示例中,java對(duì)象的全類名對(duì)應(yīng)XML文件的根元素,屬性名對(duì)應(yīng)XML文件的節(jié)點(diǎn)元素,但在實(shí)際情況中,java對(duì)象和XML對(duì)象可能都已經(jīng)定義好了名字,這時(shí)就需要使用別名映射。

XStream有3種別名配置情況:

類別名:用alias(Stringname,Classtype)。

類成員別名:用aliasField(Stringalias,ClassdefinedIn,StringfieldName)。

類成員作為屬性別名:用aliasAttribute(ClassdefinedIn,StringattributeName,Stringalias),單獨(dú)命名沒(méi)有意義,還要通過(guò)useAttributeFor(ClassdefinedIn,StringfieldName)應(yīng)用到某個(gè)類上。

(2)通過(guò)別名修改2.2中示例:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

2.4、XStream轉(zhuǎn)換器

在開(kāi)發(fā)過(guò)程中,有時(shí)候需要轉(zhuǎn)換一些自定義的類型,只要實(shí)現(xiàn)Converter接口,并調(diào)用XStream的registerConverter()方法注冊(cè)轉(zhuǎn)換器就可以。

2.5、XStream注解

(1)XStream常用注解如下:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

(2)使用

XStreamxstream=newXStream(newDomDriver());

加載對(duì)象有2種方式:

①方式一:

xstream.processAnnotations(AAA.class);

xstream.processAnnotations(BBB.class);

②方式二:

xstream.autodetectAnnotations(true);//自動(dòng)加載注解bean,而且還緩存了標(biāo)注的對(duì)象

2.6、流化對(duì)象

(1)XStream為ObjectInputStream和ObjectOutputStream提供了替代實(shí)現(xiàn),允許以對(duì)象流的方式進(jìn)行XML序列化或反序列化操作。前面是基于DOM的XML解析器讀取的XML,這里我們顯然應(yīng)該使用流的方式進(jìn)行解析。

示例如下:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

(2)使用PrettyWriter和CompactWriter的區(qū)別就在于PrettyWriter會(huì)格式化生成的XML,而CompactWriter會(huì)壓縮生成的XML。

2.7、持久化API

(1)XStream提供了一套簡(jiǎn)單的方式,可以將集合中的對(duì)象持久化到文件中,如:XmlArrayList、XmlSet、XmlMap等。

(2)在創(chuàng)建集合之前,還需要指定一個(gè)持久化策略PersistenceStrategy。

2.8、處理JSON

(1)XML在WebService中有不可動(dòng)搖的地位,但是在大多數(shù)web應(yīng)用中,還是多采用輕量級(jí)的JSON作為數(shù)據(jù)交換格式。

(2)XStream提供了JettisonMappedXmlDriver和JsonHierarchicalStreamDriver來(lái)完成java對(duì)象和json的轉(zhuǎn)換工作。

示例如下:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

(3)JettisonMappedXmlDriver和JsonHierarchicalStreamDriver的區(qū)別:

①JettisonMappedXmlDriver生成的是壓縮的JSON,而JsonHierarchicalStreamDriver生成的是格式化的JSON。

②要想將JSON轉(zhuǎn)換為對(duì)象,只能使用JettisonMappedXmlDriver。

3、其他常見(jiàn)的O/XMapping開(kāi)源項(xiàng)目

JAXB、XMLBeans、Cstor、JiBX的比較:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

4、與SpringOXM整合

4.1、SpringOXM概述

(1)SpringOXM對(duì)主流O/XMapping框架做了一個(gè)統(tǒng)一的抽象和封裝,Marshaller和Unmarshaller是SpringOXM兩個(gè)核心接口。Marshaller用于將對(duì)象轉(zhuǎn)成XML,Unmarshaller用于將XML轉(zhuǎn)成對(duì)象。

(2)各O/XMapping組件包裝器如下:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

4.2、在Spring中進(jìn)行配置

(1)XStreamMarshaller配置實(shí)例:

spring如何使用OXM進(jìn)行對(duì)象XML映射解析

5、小結(jié)

(1)java應(yīng)用程序的XML數(shù)據(jù)綁定可以歸納為2種方式:

根據(jù)XML文檔生成Java語(yǔ)言代碼(如JAXB、XMLBeans、Castor)。

使用某種形式的映射綁定方法,也就是設(shè)定Java類如何與XML進(jìn)行關(guān)聯(lián)(如XStream、Castor、JiBX)。

(2)2種方式比較:

使用由Schema或DTD定義的穩(wěn)定文檔結(jié)構(gòu),并且該結(jié)構(gòu)適合應(yīng)用程序的需要,則代碼生成方法可能是最佳選擇。

如果使用現(xiàn)有的Java類,或者希望使用類的結(jié)構(gòu),該結(jié)構(gòu)反映應(yīng)用程序?qū)?shù)據(jù)的用法,而不是XML結(jié)構(gòu),則映射方法是最佳選擇。

以上是“spring如何使用OXM進(jìn)行對(duì)象XML映射解析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前名稱:spring如何使用OXM進(jìn)行對(duì)象XML映射解析-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://m.rwnh.cn/article36/ddddpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站營(yíng)銷、網(wǎng)站導(dǎo)航靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
桐城市| 峨眉山市| 瑞金市| 长沙县| 宁波市| 沭阳县| 射阳县| 崇左市| 新营市| 革吉县| 米林县| 米泉市| 吉水县| 二手房| 乡城县| 莱州市| 邯郸市| 西平县| 黄大仙区| 沅陵县| 宁德市| 清涧县| 嵊州市| 株洲市| 晋中市| 彰武县| 上杭县| 玉屏| 康定县| 镇巴县| 怀柔区| 古蔺县| 比如县| 广元市| 历史| 蒙山县| 昌黎县| 威宁| 嘉祥县| 乌什县| 抚州市|