Java到XML的转换?

Java到XML的转换?,第1张

Java到XML的转换?

JAXB是将Java对象覆盖为XML的标准和最佳方法。有几种可用的开源实现:

  • Eclipselink MOXy(我是技术负责人)
  • Metro(参考实现,包含在Java SE 6中)
  • 杰克斯·梅

有关JAXB的更多信息,请查看我的博客:

  • http://bdoughan.blogspot.com

更新:

什么是最好的方法?

这最终取决于您要尝试执行的 *** 作,我将在下面进行解释:

用例#1-从XML模式开始

在此用例中,您有一个XML模式,并且想要生成一个Java模型。此线程中提到的许多工具都不支持此用例。
例如,XStream为此推荐XMLBeans。

提名人:

  • JAXB(所有实现)-生成带有JAXB批注的POJO。
  • XMLBeans-生成包含XML绑定逻辑的专有类。

用例2-从Java类开始(可以编辑)

在此用例中,您有更多选择(仅消除了XMLBeans)。编辑通常涉及添加注释以控制映射。

提名人:

  • 除了XMLBeans之外的所有人

用例3-启动表单Java类(您无法编辑)

在这种情况下,您没有修改模型类的源。这要求将元数据与按代码的XML文件一起提供给外部。

提名人:

  • Eclipselink JAXB(MOXy)-提供一个外部绑定文件,并且可以通过编程方式应用元数据。
  • Metro JAXB-可以利用Annox或JAXB简介
  • Castor-提供外部绑定文件
  • JiBX-提供一个外部绑定文件
  • XStream-可以以编程方式应用元数据

用例4-中间相遇(现有的类和架构)

在此用例中,您需要将现有的类映射到现有的XML模式。Eclipselink
MOXy及其基于XPath的映射是我所知道的唯一可以处理此用例的工具

提名人:

  • Eclipselink JAXB(MOXy)

用例5-XML信息集保存:

在这种用例中,您需要保留未映射的内容:注释,处理说明等。

提名人:

  • JAXB(所有实现)-具有活页夹功能。
  • XMLBeans-生成的对象模型存储整个XML信息集。

用例#6-与JPA的兼容性

JPA是Java持久性的Java标准。JPA具有许多概念:组合键,双向关系,延迟加载等,它们很难与XML绑定解决方案一起使用。例如,任何仅通过字段与对象进行交互的XML工具通常都会出现延迟加载属性的问题。

提名人:

  • Eclipselink JAXB(MOXy)-在构建时考虑了JPA。

用例#7-与XML Web服务(JAX-WS)的兼容性

JAXB是JAX-WS的默认绑定层。

提名人:

  • JAXB(实现取决于JAX-WS提供程序)

用例#8-与RESTful Web服务(JAX-RS)的兼容性

基于HTTP协议,JAX-RS提供了JAX-
WS的轻量级替代方案。请查看以下示例。

提名人:

  • JAXB(所有实现)-默认绑定层,最易于与JAX-RS一起使用。
  • 其他所有内容-您可以利用MessageBodyReader / Writer的概念来使用其他XML工具。

用例#9-与Spring的兼容性

Spring内置了一些对与XML绑定工具集成的支持,请查看以下链接以获取更多信息:

  • http://static.springsource.org/spring-ws/docs/0.9.1/reference/oxm.html

提名人:

  • JAXB(所有实现)
  • castor
  • XMLBeans
  • jibx

其他要考虑的事情

  • 该工具仍在开发/支持吗?听起来很有趣,我已经看到人们推荐5年没有更新的工具。这里提到的一些工具已经两年没有发布了。

我的最佳选择方法? -JAXB

综观以上类别,JAXB不一定总是最适合特定用例(但总是很适合),但它是唯一可以用于所有用例的库。这意味着它总是可以胜任。替代方法是将不同的库用于不同的任务,从而为您提供多个库来支持。

我确实领导了JAXB实现Eclipselink MOXy,但是MOXy最初是作为专有XML绑定库Toplink
OXM开始的。Toplink始终了解标准(即EJB / JPA)的好处,因此我们实现了JAXB1。然后(我是代表)我们成为JAXB
2(JSR-222)的活跃成员。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存