我多年前使用过XStream,但我发现自2008年后该库就没有更新了(最新消息)。现在有没有更现代化和更新的Java XML序列化库呢?
答案:我多年前使用过 XStream 库,但是我发现它自2008年以来就没有更新了(最新消息)。 现在有更现代化和更新的 Java XML 序列化库吗?
我多年前使用过XStream,但我发现自2008年后该库就没有更新了(最新消息)。现在有没有更现代化和更新的Java XML序列化库呢?
答案:按照优先级、相关性和活动顺序:
访问JAXB项目网站查看教程和指南。也可以查看原始的JAXB架构白皮书。
上述JAXB项目是API的参考实现,并由GlassFish应用服务器打包。
访问EclipseLink项目网站并阅读这篇在InfoQ上介绍EclipseLink的文章,还可以查看Blaise Doughan关于MOXy的答案。
EclipseLink起源于Oracle的TopLink,现在是开源项目,由Eclipse Foundation管理,并用于许多基于Eclipse的产品中。是的,XStream,因为它实际上已经在2011年进行了重大更新和2个服务发布,所以它看起来维护得很好,是一个被成熟项目使用的不错的竞争者。别忘了查看版本1.4.x中的新内容。
请访问XStream项目网站和其教程进行比较。
请访问XmlBeans项目网站。
XmlBeans是一个经过充分测试且存在一段时间的项目。
如果您不喜欢XmlBeans甚至JAXB的复杂性,JiBX可能是一个更简单的选择。
1 - ... 当问题最初被提出时。
更新 - 2023年
自2011年以来,XStream每年至少发布一次更新。请参考更改页面了解详细信息,并查看项目的Github存储库上的活动。目前,关于XStream未得到维护的理论已经(依我之见)彻底被驳斥。
注意:我是EclipseLink JAXB (MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。
在选择软件时考虑库的发布频率是正确的。有很多原因需要发布新产品:
评估任何开源项目的另一个重要方面是活跃的提交者数量。像ohloh.net这样的网站非常有用:
JAXB (JSR-222)
JAXB不仅是一种实现,它还是通过Java社区流程(JCP)开发的标准。来自XML Beans(BEA)、EMF(IBM)、TopLink(Oracle)等对象到XML库的参与者已经参与其中。由于JAXB是Java EE的一部分,因此在每个应用程序服务器中都可以使用:WebLogic、GlassFish、WebSphere、JBoss等。
JAXB提供了以下功能:
EclipseLink JAXB (MOXy)
MOXy是一个JAXB实现,提供了许多有用的扩展功能,包括:
通过利用XPath实现真正的对象到XML映射
基于XPath的映射允许您同时使用Java类和XML模式来进行映射。
处理第三方类的映射文件
在当前的JAXB规范中,元数据是通过注释提供的。这可能会导致在使用无法修改的第三方类时出现问题。这就是为什么MOXy提供了一种通过XML指定映射的方式:
JPA实体映射扩展
通常情况下,您需要对Java对象进行更多操作,而不仅仅是将它们映射到XML。您可能还需要将它们持久化到数据库中。这意味着您的对象模型可能具有额外的约束条件,您需要考虑这些条件。MOXy提供了许多针对此类用例的扩展:
比较
以下是我进行的几个比较,将JAXB与XStream和Simple进行了比较:
XStream 1.4.6于2013年12月发布,具有Java 8的改进功能,因此该库自2008年以来已经更新。