从 Java 到 XML 的序列化/反序列化的最佳实践

Posted

技术标签:

【中文标题】从 Java 到 XML 的序列化/反序列化的最佳实践【英文标题】:Best Practice for Serialize/Deserialize from Java to XML 【发布时间】:2011-02-23 14:23:28 【问题描述】:

将 Java 类序列化为 XML 的最合适方法是什么? 我尝试了 JAXB,但它在接口和泛型方面存在问题。哪种解决方案侵入性最小但可扩展?

【问题讨论】:

【参考方案1】:

我一直对 XStream 有积极的体验:

http://x-stream.github.io/tutorial.html#to-xml

如您所见,它使用起来很简单。

我实际上并没有将 XStream 与泛型一起使用(我只将它用于简单的 JavaBean 类型类),但 Google 似乎建议它可以毫无问题地处理它们。例如http://techo-ecco.com/blog/xstream-spring-ws-oxm-and-generics/

【讨论】:

n.b.该博客链接导致谈论使用 Spring 来简化输出的 xml,但第一个 xml sn-p 表明普通的 XStream 很好地处理了 Generic LinkedList 教程本身使用 List 所以它似乎工作。因此 /must have standard constructor/ 是公平的权衡。【参考方案2】:

我建议克服 JAXB 的接口和泛型问题。

JAXB Marshalling and Generics

java.util.List is an interface, and JAXB can't handle interfaces

【讨论】:

我已经阅读了这些,但发现解决方案不适合,它无法扩展以使用泛型为每个类构建适配器。转换到数组/从数组转换是可以的 - 如果 JAXB 可以透明地进行并且无需我的帮助。

以上是关于从 Java 到 XML 的序列化/反序列化的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

将此 XML 反序列化为对象的最佳方法

直接反序列化到/从 XML Linq

使用 Jackson 从 XML 到 POJO 的反序列化问题:没有从字符串值反序列化的字符串参数构造函数/工厂方法

java中xml反序列化,绑定到实体上

从 XML 文档创建的 Json 反序列化到 POCO 不适用于数组

如何从 nusoap 服务返回的 XML 反序列化对象?