Java XStream库的现代替代品?贾克斯布 EclipseLink的MOXy XStreamXmlBeans断续器
我多年前使用XStream,但我看到这些库自2008年以来没有更新(最新消息)。现在是否有更现代和最新的 Java XML 序列化库?
我多年前使用XStream,但我看到这些库自2008年以来没有更新(最新消息)。现在是否有更现代和最新的 Java XML 序列化库?
按偏好、相关性和活动顺序:
访问 JAXB 项目的站点以查看教程和指南。另请查看原始的 JAXB 体系结构白皮书。
上面列出的 JAXB 项目是 API 的参考实现,由 GlassFish Application Server 打包。
访问EclipseLink项目的网站,阅读这篇关于InfoQ的EclipseLink的介绍性文章,并查看Blaise Doughan关于MOXy的回答。
EclipseLink起源于Oracle的TopLink,现在是开源的,由Eclipse基金会管理,并用于许多基于Eclipse的产品中。
是的,XStream,因为它实际上在2011年进行了更新,自您询问以来进行了重大更新和2个服务版本,因此它似乎维护得很好,并且是成熟项目使用的相当不错的竞争者。不要忘记检查版本1.4.x中的新功能。
请访问 XStream 项目的网站及其教程进行比较。
访问 XmlBeans 项目的网站。
XmlBeans 是一个经过良好测试的项目,已经存在了一段时间。
访问 JiBX 项目的网站,按照教程和指南进行操作。
如果您不喜欢 XmlBeans 甚至 JAXB 的复杂性,JiBX 可能是一个更简单的替代方法。
注意:我是EclipseLink JAXB(MOXy)负责人,也是JAXB(JSR-222)专家组的成员。
在做出软件选择时,考虑库的发布频率是正确的。发布新产品的原因有很多:
评估任何开源项目的另一个重要方面是活跃提交者的数量。像 ohloh.net 这样的网站对此很有用:
JAXB (JSR-222)
JAXB不仅仅是一个实现,它是一个通过Java社区进程(JCP)开发的标准。有来自XML Bean(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进行比较的几个比较: