哪个xml解析impl只解析XML的一部分并将其存储在DB中

时间:2013-05-20 15:52:38

标签: java xml-parsing jaxb

我一直在网上搜索,但我找不到符合我要求的东西,不知道该怎么做。我知道这已被问过几次,但不完全相同。

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。

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

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

由于文档很大而你只需要它的一部分,我建议将JAXB实现与StAX解析器结合使用。您可以使用XMLStreamReader前进到要解组的文档部分,只需要解组所需的块。


  

最好将此XML绑定到POJO类,然后再将其绑定到POJO类   用JPA持久保存到DB?

由于MOXy是EclipseLink的一个组件,它是JPA参考实现,我们在这些用例上花费了大量精力。我是MOXy的领导者,我和前JPA合作规范主管Mike Keith共用一个隔间墙。