版权声明:本文为博主原创文章,未经博主允许不得转载。 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集成,也可以单独使用。