java 中 Object XML 互转,最终选择Xstream
生活随笔
收集整理的這篇文章主要介紹了
java 中 Object XML 互转,最终选择Xstream
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前言
- spring boot 2.0.0 RELEASE
- maven 3.5.0
- 項(xiàng)目中需要進(jìn)行 Object 與 XML 的互轉(zhuǎn)。為此嘗試了幾個(gè)互轉(zhuǎn)工具,進(jìn)行記錄。
- 耗費(fèi)了一天的時(shí)間,將FasterXML、Caster、JAXB、Xstream都嘗試了一遍。過(guò)程很痛苦。記錄一下。
- 最終選擇Xstream(未評(píng)價(jià)性能,只是看能不能滿(mǎn)足功能要求。此項(xiàng)目暫無(wú)性能要求。)。
FasterXML
- Jackson可以輕松的將Java對(duì)象轉(zhuǎn)換成json對(duì)象和xml文檔,同樣也可以將json、xml轉(zhuǎn)換成Java對(duì)象。
- 嘗試版本:jackson-dataformat-xml 2.9.0
- 項(xiàng)目地址:https://github.com/FasterXML/jackson-dataformat-xml
- 無(wú)復(fù)雜要求的 Object 與 XML 的互轉(zhuǎn)可以勝任,復(fù)雜的還是不可以的。具體可以參考 https://github.com/FasterXML/jackson-dataformat-xml 中列出的限制。
- 如果 Object 與 XML 的互轉(zhuǎn)受自己控制,可以選擇FasterXML。使用起來(lái)挺簡(jiǎn)單的。還能支持json格式。
- 如果 Object 與 XML 的互轉(zhuǎn)不受自己控制,比如:與外部系統(tǒng)通過(guò)xml進(jìn)行數(shù)據(jù)交互時(shí),不建議用啊。你也不知道對(duì)方會(huì)不會(huì)來(lái)個(gè)炫技啥的,出現(xiàn)個(gè)識(shí)別不了的XML時(shí),還得換工具,比較麻煩,還是防微杜漸吧。
Spring Marshalling XML using O/X Mappers
- 嘗試版本:Spring 5.0.4.RELEASE
- Spring提供的 Object 與 XML 的互轉(zhuǎn)工具。吐槽一下,單獨(dú)使用時(shí),真心不好用。或許是未考慮單獨(dú)提供出來(lái)用。
- Spring只是統(tǒng)一了接口,具體的實(shí)現(xiàn)有:JAXB、Caster、JiBX、Xstream
- Caster:已經(jīng)放棄支持了。“Spring Framework 4.3.13, due to the lack of activity on the Castor project”
- JAXB:與Spring集成后,無(wú)法設(shè)置NamespacePrefixMapper。
- JiBX:未嘗試集成。
- Xstream:未嘗試集成。
JAXB
- 嘗試版本: JAXB 2.3.0
- 項(xiàng)目地址:https://github.com/javaee/jaxb-v2
- 基本上能夠滿(mǎn)足我的要求,用著挺好用。也能跟spring集成。支持注解,注解使用起來(lái)方便,注解支持的也多。
- 唯一缺點(diǎn):不能將NameSpace的前綴設(shè)置成空(”“/null)。設(shè)置了也無(wú)效。(設(shè)置成其它的,是有效的)
- 項(xiàng)目的git倉(cāng)庫(kù)中,示例不少,這點(diǎn)真心不錯(cuò)。
- 對(duì)于需要將NameSpace的前綴設(shè)置成空(”“/null)時(shí),放棄它吧。(花了半天時(shí)間,檢索了大量的文章,也沒(méi)能解決此事)
Xstream
- 嘗試版本: xstream 1.4.10
- 項(xiàng)目主頁(yè):https://x-stream.github.io/index.html
- 支持注解。
- 支持List/Map。
- 能夠設(shè)置NameSpace的前綴設(shè)置成空(”“/null)。
- 能與Spring集成,也可以單獨(dú)使用。
總結(jié)
以上是生活随笔為你收集整理的java 中 Object XML 互转,最终选择Xstream的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 采用 CoWoS 封装,消息称英伟达中国
- 下一篇: Spring @scope注解