1

我一直在网上搜索,但没有找到任何符合我要求的东西,也不知道该怎么做。我知道这已经被问过好几次了,但和这个不完全相同。

我们有一些大型 XML 文件(仍然不知道大小,但我猜肯定小于 1GB)。我们只需要这些文件的一部分(只有 XSD 的一部分对我们有用),我们必须读取然后存储在 DB 中。将来我们可能需要重新创建 XML 文件,但这在第一阶段没有涉及。

好吧,我已经看到这样的事情使用 JAXB 更好,但我对 JAXB 实现有点困惑。我们有 JDK 实现、Castor、Metro 和 EclipseLink Moxy,我想我至少已经看到了另外 2 个实现。哪一个最好将此 XML 绑定到 POJO 类,然后使用 JPA 持久保存到 DB?有没有比我列出的更好的实现?我列出的任何一个都已过时?(我问这个是因为我访问过的许多页面都很旧,并且不确定过去几年是否有变化)

性能固然重要,但重要的是我们只需要包含在 XML 中的部分元素。顺便说一句,这是用于 SG1-XML 标准。

提前致谢。

4

1 回答 1

0

注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。

JAXB (JSR-222)是用于 XML 绑定的 Java 标准,它被其他标准所利用,例如 JAX-WS(SOAP Web 服务)和 JAX-RS(RESTful Web 服务)。

  • JAXB 项目(Metro 的一部分)是参考实现,JDK/JRE 的大多数 implementationjs 中包含的 JAXB 的版本都来源于它。
  • EclipseLink MOXy是一个符合 JAXB 的实现,通过了所有必要的合规性测试。它提供了有用的扩展,例如基于路径的映射和对映射 JPA 实体的额外支持(EclipseLink 还提供了 JPA 实现)。
  • Castor - Castor 似乎提供了至少部分 JAXB 实现(参见: http ://docs.codehaus.org/display/CASTOR/Castor+JAXB )。一般来说,我建议远离任何只实现规范的一部分的东西。

由于文档很大并且您只需要其中的一部分,因此我建议将 JAXB 实现与 StAX 解析器结合使用。您可以使用 anXMLStreamReader前进到您希望解组的文档部分,并且只解组您需要的块。


哪一个最好将此 XML 绑定到 POJO 类,然后使用 JPA 持久保存到 DB?

由于 MOXy 是 EclipseLink 的一个组件,它是 JPA 参考实现,我们在这些用例上花费了大量精力。我是 MOXy 负责人,我与前 JPA 联合规范负责人 Mike Keith 共用一堵隔间墙。

于 2013-05-21T15:23:52.570 回答