我多年前使用过XStream,但我发现自2008年以来这些库没有更新(latest news)。现在是否有更现代化和最新的Java XML序列化库?
答案 0 :(得分:23)
按照偏好,相关性和活动的顺序:
访问JAXB project's site,查看tutorial和guide。 还要看一下原来的JAXB architecture whitepaper。
上面列出的JAXB项目是API的参考实现,由GlassFish Application Server打包。
访问EclipseLink project's site并阅读此introductory article to EclipseLink on InfoQ,然后查看Blaise Doughan's answer about MOXy。
EclipseLink源自Oracle的TopLink,现在是开源的,由Eclipse Foundation管理,并在许多基于Eclipse的产品中使用。
是的,XStream,因为你问过它实际上是updated in 2011 with a major update and 2 service releases,所以它看起来维护得很好并且mature projects使用了很好的竞争者。不要忘记查看version 1.4.x中的新内容。
访问XStream project's site及其tutorial进行比较。
XmlBeans是一个经过充分测试的项目,已经存在了一段时间。
访问JiBX project's site,关注tutorial和guide。
如果你不喜欢XmlBeans甚至JAXB的复杂性,JiBX可能是一个更简单的选择。
答案 1 :(得分:10)
注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB(JSR-222)专家组的成员。
在选择软件时考虑库的发布频率是正确的。新产品发布的原因有很多:
评估任何开源项目的另一个重要方面是活动提交者的数量。像ohloh.net这样的网站对此非常有用:
JAXB(JSR-222)
JAXB不仅仅是一个实现,它是通过Java Community Process(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进行比较的几个比较:
答案 2 :(得分:7)
事情是3年内没有更新的东西并不意味着它已经过时了。它可能只是意味着没有需要来更新它。如果不需要更改项目,为什么要更改它?
明显缺乏“进展”的另一个解释是,更改库API往往会对依赖于它们的项目造成破坏。对于将大量第三方组件和库组合到一个Java应用程序中的项目,这尤其成问题。
寻找图书馆的替代方案是一件好事,但仅仅这样做是因为图书馆最近没有更新过。如果XStream能够满足您的需求,请坚持下去。较新并不一定意味着更好。
答案 3 :(得分:4)
XStream非常好,它的工作做得很好。即使对于最近的项目,我更喜欢将XStream用于适合的用例,因为它易于使用,重量轻,性能非常好。
如果您正在查看一些严肃的bean绑定工作,请查看Simple Framework。它也是一个很好的工具。这帮助我在一个项目中,我需要做一些严肃的自定义映射工作与注释。 http://simple.sourceforge.net/
答案 4 :(得分:0)
XStream 1.4.6于2013年12月发布,改进了Java 8,因此自2008年以来该库已更新。
答案 5 :(得分:0)
Underscore-java可以读写xml文件。我是该项目的维护者。支持Java 11 +。