前言

  • 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集成,也可以单独使用。

java 中 Object XML 互转,最终选择Xstream相关推荐

  1. Java 中的 XML:Java 文档模型的用法

    Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...

  2. 宣布EAXY:使Java中的XML更容易

    Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且对名称空间的处理带来许多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...

  3. Java中操作Xml使用备忘

    List item 文章目录 Java中操作Xml使用备忘 1. Hutool中XmlUtil的使用简介 2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时,推荐使用] 2 ...

  4. 如何从Java中打印XML?

    本文翻译自:How to pretty print XML from Java? I have a Java String that contains XML, with no line feeds ...

  5. 宣布EAXY:在Java中简化XML

    Java中的XML库是一个雷区. 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且命名空间的处理带来了很多混乱和错误. 最糟糕的是,情况似乎并没有改善. 一位同事让我意 ...

  6. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  7. flex array java_Flex中ArrayCollection 与java中的ArrayList互转

    Flex中ArrayCollection与java中的ArrayList互转 这里说这是Flex用remoting传一个ArrayCollection到后台(后台也用ArrayCollection接参 ...

  8. java中拼写xml

    本文为博主原创,未经博主允许,不得转载: xml具有强大的功能,在很多地方都会用的到.比如在通信的时候,通过xml进行消息的发送和交互. 在项目中有很多拼写xml的地方,进行一个简单的总结. 先举例如 ...

  9. java 子类tostring,JAVA中Object类的toString()方法,objecttostring

    JAVA中Object类的toString()方法,objecttostring toString public String toString() 返回该对象的字符串表示.通常,toString 方 ...

最新文章

  1. encodeURIComponent或者encodeURI 不用行不行?
  2. 后端生成Token架构与设计详解
  3. 跳表(SkipList)设计与实现(java)
  4. GDCM:串联/提取DICOM文件的测试程序
  5. 爬虫基本原理及Request和Response分析
  6. Codeforces 915 E Physical Education Lessons
  7. Android 系统(186)---最易懂的Android屏幕适配解决方案--总结版
  8. 神奇的仙丹,性感的Elixir
  9. vscode-tab按键失效变为切换功能的解决方法
  10. 50个精心收集的惊人的jquery绚丽插件--功能全覆盖
  11. tkinter中combobox下拉选择控件(九)
  12. 一个bat文件运行多个java jar包
  13. 通州区机器人比赛活动总结_机器人社团活动课总结
  14. 深度学习面试题汇总大全(转)
  15. 联合利华、微软、Brooks、Neste、ITV等另外13家公司加入《气候宣言》
  16. 创建一个字体wx.Font
  17. 智能微型断路器的功能有哪些?和网关搭配的作用在哪?
  18. Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
  19. Amdahl定律和Gustafson定律
  20. python对于字典d d.get(x、y)_python--字典

热门文章

  1. json和对象、list互转
  2. 路由器启动后如何定位IOS?
  3. android布局之线性布局
  4. Keeplived配置Nginx双机高可用【转】
  5. Response.Write()方法响应导致页面内容变形的问题
  6. WIF基本原理(2)基于声明的标识模型
  7. centos6.0编译安装mysql5.5脚本
  8. 关于Java栈与堆的思考
  9. 一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册
  10. 遗传算法求解背包问题