java 中 Object XML 互转,最终选择Xstream

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sayyy/article/details/81937713

前言

  • spring boot 2.0.0 RELEASE
  • maven 3.5.0
  • 项目中需要进行 Object 与 XML 的互转。为此尝试了几个互转工具,进行记录。
  • 耗费了一天的时间,将FasterXML、Caster、JAXB、Xstream都尝试了一遍。过程很痛苦。记录一下。
  • 最终选择Xstream(未评价性能,只是看能不能满足功能要求。此项目暂无性能要求。)。

FasterXML

  • Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
  • 尝试版本:jackson-dataformat-xml 2.9.0
  • 项目地址:https://github.com/FasterXML/jackson-dataformat-xml
  • 无复杂要求的 Object 与 XML 的互转可以胜任,复杂的还是不可以的。具体可以参考 https://github.com/FasterXML/jackson-dataformat-xml 中列出的限制。
  • 如果 Object 与 XML 的互转受自己控制,可以选择FasterXML。使用起来挺简单的。还能支持json格式。
  • 如果 Object 与 XML 的互转不受自己控制,比如:与外部系统通过xml进行数据交互时,不建议用啊。你也不知道对方会不会来个炫技啥的,出现个识别不了的XML时,还得换工具,比较麻烦,还是防微杜渐吧。

Spring Marshalling XML using O/X Mappers

  • 尝试版本:Spring 5.0.4.RELEASE
  • Spring提供的 Object 与 XML 的互转工具。吐槽一下,单独使用时,真心不好用。或许是未考虑单独提供出来用。
  • Spring只是统一了接口,具体的实现有:JAXB、Caster、JiBX、Xstream
  • Caster:已经放弃支持了。“Spring Framework 4.3.13, due to the lack of activity on the Castor project”
  • JAXB:与Spring集成后,无法设置NamespacePrefixMapper。
  • JiBX:未尝试集成。
  • Xstream:未尝试集成。

JAXB

  • 尝试版本: JAXB 2.3.0
  • 项目地址:https://github.com/javaee/jaxb-v2
  • 基本上能够满足我的要求,用着挺好用。也能跟spring集成。支持注解,注解使用起来方便,注解支持的也多。
  • 唯一缺点:不能将NameSpace的前缀设置成空(”“/null)。设置了也无效。(设置成其它的,是有效的)
  • 项目的git仓库中,示例不少,这点真心不错。
  • 对于需要将NameSpace的前缀设置成空(”“/null)时,放弃它吧。(花了半天时间,检索了大量的文章,也没能解决此事)

Xstream

  • 尝试版本: xstream 1.4.10
  • 项目主页:https://x-stream.github.io/index.html
  • 支持注解。
  • 支持List/Map。
  • 能够设置NameSpace的前缀设置成空(”“/null)。
  • 能与Spring集成,也可以单独使用。

猜你喜欢

转载自blog.csdn.net/sayyy/article/details/81937713