欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

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

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

1、認識XML解析技術

1.1、XML相關概念

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

(2)XML是SOA的基礎。

1.2、XML處理技術

(1)為了使用XML,我們需要通過XML處理器或XMLAPI來訪問數據,目前JAXP提供了2種處理XML的方法:DOM和SAX。

①DOM:DOM通過編程方式對XML文檔中數據及結構進行訪問,基于XML文檔在內存中的樹狀結構。其缺點是將整個XML文檔裝入內存需要很大開銷。

②SAX:基于事件驅動,用到一段解析一段,解決了DOM占用內存大的問題,但其缺點是無法隨機訪問文檔。

(2)為了解決DOM和SAX的問題,一種基于流的StreamAPIforXML(簡稱StAX)出現了,目前已加入到JDK6的JAXP1.4里面,StAX也是基于事件驅動。

(3)DOM、SAX和StAX都是從文檔結構出發(fā)處理XML的,但很多應用程序僅僅關注文檔數據本身,所以XML數據綁定技術應運而生。

數據綁定:是指將數據從存儲媒介(XML文檔和數據庫中)抽取出來,并通過程序表示這些數據的過程,即把數據綁定到虛擬機能夠理解并且可以操作的某種內存結構中。

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

2、XML處理利器:XStream

2.1、XStream概述

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

spring如何使用OXM進行對象XML映射解析

(2)XStream架構組成:

Converters(轉換器):當XStream遇到需要轉換的對象時,它會委派給合適的轉換器實現。

IO(輸入/輸出):XStream是通過HierarchicalStreamWriter和HierarchicalStreamReader從底層XML數據中抽象而來,分別用于序列化和反序列化操作。

Context(上下文):XStream序列化反序列化對象時會創(chuàng)建2個類MarshallingContext和UnmarshallingContext,由塔門來處理數據并委派給合適的轉換器。

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

2.2、快速入門

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

XStreamxstream=newXStream(newDomDriver());

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

(2)示例如下:

spring如何使用OXM進行對象XML映射解析

2.3、使用XStream別名

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

XStream有3種別名配置情況:

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

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

類成員作為屬性別名:用aliasAttribute(ClassdefinedIn,StringattributeName,Stringalias),單獨命名沒有意義,還要通過useAttributeFor(ClassdefinedIn,StringfieldName)應用到某個類上。

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

spring如何使用OXM進行對象XML映射解析

2.4、XStream轉換器

在開發(fā)過程中,有時候需要轉換一些自定義的類型,只要實現Converter接口,并調用XStream的registerConverter()方法注冊轉換器就可以。

2.5、XStream注解

(1)XStream常用注解如下:

spring如何使用OXM進行對象XML映射解析

(2)使用

XStreamxstream=newXStream(newDomDriver());

加載對象有2種方式:

①方式一:

xstream.processAnnotations(AAA.class);

xstream.processAnnotations(BBB.class);

②方式二:

xstream.autodetectAnnotations(true);//自動加載注解bean,而且還緩存了標注的對象

2.6、流化對象

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

示例如下:

spring如何使用OXM進行對象XML映射解析

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

2.7、持久化API

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

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

2.8、處理JSON

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

(2)XStream提供了JettisonMappedXmlDriver和JsonHierarchicalStreamDriver來完成java對象和json的轉換工作。

示例如下:

spring如何使用OXM進行對象XML映射解析

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

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

②要想將JSON轉換為對象,只能使用JettisonMappedXmlDriver。

3、其他常見的O/XMapping開源項目

JAXB、XMLBeans、Cstor、JiBX的比較:

spring如何使用OXM進行對象XML映射解析

spring如何使用OXM進行對象XML映射解析

4、與SpringOXM整合

4.1、SpringOXM概述

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

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

spring如何使用OXM進行對象XML映射解析

4.2、在Spring中進行配置

(1)XStreamMarshaller配置實例:

spring如何使用OXM進行對象XML映射解析

5、小結

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

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

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

(2)2種方式比較:

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

如果使用現有的Java類,或者希望使用類的結構,該結構反映應用程序對數據的用法,而不是XML結構,則映射方法是最佳選擇。

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

當前名稱:spring如何使用OXM進行對象XML映射解析-創(chuàng)新互聯(lián)
轉載來源:http://www.aaarwkj.com/article36/ddddpg.html

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

廣告

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

外貿網站制作
欧美久久精品在线观看| 亚洲综合色一区二区三区小说| 亚洲高清中文字幕一区二三区| 久久国产精品人妻av| 免费人成网站在线观看| 日韩精品欧美成人高清一区二区| 亚洲中文永久免费视频| 亚洲禁看av一区不卡| 日韩精品熟女一区二区三区| 成人国产av一区二区三区| 日韩成人中文字幕在线视频| 欧美精品中出一区二区三区| 国产福利91精品一区二区三| 日韩精品少妇一区二区在线看| 国产自拍偷拍自拍偷拍| 日本不卡二区高清三区| 国产三级三级三级三级| 丰满人妻在线一区二区三区| 日韩一区二区三区高清免费视频成人| 这里只有精品国产999| 中文字幕日韩欧美一区二区| 婷婷亚洲悠悠色悠在线| 久久婷亚洲综合五月天| 美女床上激情啪啪网页| 亚洲一区二区三区在线播| 欧美 日本国产一区| 久久视热频这里只有精品| 国产精品五月婷婷六月丁香| 在线免费观看午夜视频| 一本之道久久成人综合| 精品国产一区二区三级四区| 日韩精品福利片午夜免费| 少妇二区三区精品视频| 深夜十八禁在线免费观看| 在线看黄视频网站永久免费| 黄色av在线免费观看| 国产夫妻性生活国产视频| 中文国产人精品久久蜜桃| 国产一区精品在线免费看| 午夜丁香婷婷爽少妇av| 日本加勒比一本在线观看|