Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪个xml parse impl只解析xml的一部分并将其存储在数据库中_Java_Xml Parsing_Jaxb - Fatal编程技术网

Java 哪个xml parse impl只解析xml的一部分并将其存储在数据库中

Java 哪个xml parse impl只解析xml的一部分并将其存储在数据库中,java,xml-parsing,jaxb,Java,Xml Parsing,Jaxb,我一直在网上搜索,但没有找到任何符合我要求的东西,也不知道该怎么办。我知道这已经被问了好几次了,但和这个不完全一样 我们有一些大型XML文件(仍然不知道大小,但我想肯定小于1GB)。我们只需要这个文件的一部分(只有XSD的一部分对我们有用),我们必须读取并存储在DB中。将来,我们可能需要重新创建XML文件,但这在第一阶段中没有涉及 我已经看到,对于这样的东西,使用JAXB更好,但我对JAXB实现有点困惑。我们有JDK实现、Castor、Metro和EclipseLink Moxy,我想我已经看到

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

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

我已经看到,对于这样的东西,使用JAXB更好,但我对JAXB实现有点困惑。我们有JDK实现、Castor、Metro和EclipseLink Moxy,我想我已经看到了至少两个以上的实现。将此XML绑定到POJO类,然后使用JPA持久化到DB,哪种方法是最好的?有比我列出的更好的实现吗?我列出的那些都过时了吗?(我问这个问题是因为我访问过的许多页面都很旧,不确定过去几年是否有变化)

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


提前感谢。

注意:我是专家组的负责人和成员

是XML绑定的Java标准,其他标准(如JAX-WS(SOAP Web服务)和JAX-RS(RESTful Web服务))利用了它

  • (Metro的一部分)是参考实现,JDK/JRE的大多数实现JS中包含的JAXB版本就是从中派生出来的
  • 是通过所有必要的符合性测试的符合JAXB的实现。它提供了一些有用的扩展,例如基于路径的映射和对映射JPA实体的额外支持(EclipseLink还提供了JPA实现)
  • Castor-Castor似乎至少提供了部分JAXB实现(请参阅:)。一般来说,我建议远离那些只实现部分规范的东西

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


将此XML绑定到POJO类,然后 要使用JPA持久化到DB


由于MOXy是EclipseLink的一个组件,EclipseLink是JPA参考实现,因此我们在这些用例上花费了大量精力。我是MOXy的负责人,我和前JPA co spec负责人迈克·基思共用一个隔间墙。

谢谢,布莱斯,我会看看你的链接。我也同意远离那些只实现部分规范的东西;)我们通常在项目中使用Hibernate。我们已经生成了包含和不包含Moxy的JAXB类,我所看到的生成对象之间的唯一区别是ObjectFactory类和注释中的一些细微差异。因此,为了简单的使用(读取并提交到DB),我真的看不出有什么好的理由将moxy的JAR添加到我的项目中。我必须承认我不习惯这项技术,但我有什么遗漏吗-我一直在和我的同事争论为什么我们应该使用一个或另一个,但我失去了讨论:(.@EAmez-我在想一个例子,你可以从Java对象开始,在Java对象中你可以利用MOXy的
@XmlInverseReference
扩展:我已经读过
@XmlInverseReference
,但不知道我们是否可以使用它。我们正在开发对现有应用程序的某种扩展,我们必须集成使用它的datamodel,并使用所需的datatables扩展它,但实际上这就像一个新的应用程序。我认为您的答案中缺少了一些东西,但不知道它是什么。所以我想我必须将此标记为已回答;)