一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - spring使用OXM進行對象XML映射解析

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

2021-03-12 14:27末日流云18 Java教程

這篇文章主要介紹了spring使用OXM進行對象XML映射解析,具有一定借鑒價值,需要的朋友可以參考下

1、認識xml解析技術

1.1、xml相關概念

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

(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都是從文檔結構出發處理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序列化反序列化對象時會創建2個類marshallingcontext和unmarshallingcontext,由塔門來處理數據并委派給合適的轉換器。

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

2.2、快速入門

(1)創建一個xstream,并指定xml解析器

xstreamxstream=newxstream(newdomdriver());

如果不指定解析器,xstream會默認采用xpp(xmlpullparser)解析器,xpp是一種高速解析器。

(2)示例如下:

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

2.3、使用xstream別名

(1)在上面的示例中,java對象的全類名對應xml文件的根元素,屬性名對應xml文件的節點元素,但在實際情況中,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轉換器

在開發過程中,有時候需要轉換一些自定義的類型,只要實現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的區別就在于prettywriter會格式化生成的xml,而compactwriter會壓縮生成的xml。

2.7、持久化api

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

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

2.8、處理json

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

(2)xstream提供了jettisonmappedxmldriver和jsonhierarchicalstreamdriver來完成java對象和json的轉換工作。

示例如下:

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

(3)jettisonmappedxmldriver和jsonhierarchicalstreamdriver的區別:

①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框架做了一個統一的抽象和封裝,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進行關聯(如xstream、castor、jibx)。

(2)2種方式比較:

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

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

總結

以上就是本文關于spring使用oxm進行對象xml映射解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/qq_29583513/article/details/52524617

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品精品久久宅男的天堂 | 无码一区国产欧美在线资源 | 国产福利你懂的 | 男女真实无遮挡xx00动态图软件 | 日本不卡高清免费v日本 | 国内精品免费一区二区三区 | 啪一啪在线视频 | 国产日韩欧美在线观看不卡 | 成人一级黄色大片 | 四虎网站网址 | 我们中文在线观看免费完整版 | 叉逼视频 | 催眠 迷j系列小说 | 四虎在线网站 | 国产精品反差婊在线观看 | 毛片免 | 天若有情1992国语版完整版 | 日本乱中文字幕系列在线观看 | 国产高清免费午夜在线视频 | 99精品国产久热在线观看66 | 精品美女国产互换人妻 | 久久99精国产一区二区三区四区 | 无人区1免费完整观看 | 国产嫩草视频 | 成人亚洲欧美日韩在线观看 | 97视频免费人人观看人人 | 久久re热在线视频精6 | 9久热久爱免费精品视频在线观看 | 色天天综合色天天碰 | 午夜视频一区二区三区 | 女同69式互添在线观看免费 | 精品国产欧美精品v | 美女露尿口 | 日本邪恶动态 | 特黄级 | 亚洲视频一区二区在线观看 | 日韩欧美一级大片 | 免费国产白棉袜踩踏区域 | 男女一级簧色带 | 色导行 | 97操|