当前位置: 首页 > 面试题库 >

Java到XML的转换?

董弘新
2023-03-14
问题内容

什么是转换不同的方法Java ObjectsXML,我知道有一个选项JAXB,但想知道是什么其他approaches/tools可用于相同?

注意:
我没有进一步的要求,因此我不能meat在这个问题上添加更多内容,但是在此时,如果我能知道有哪些不同的方法可用于转换,那将非常棒Java to XML

更新: 建议的不同方法是:

  1. javax.xml.bind.Marshaller和javax.xml.bind.Unmarshaller
  2. XStream的
  3. XMLBean
  4. jaxb
  5. castor
  6. jibx
  7. apache

现在,在所有建议的方法中,进行转换和转换的 _ 最佳_ 方法是什么?Java Objects to XML``XML to Java Objects


问题答案:

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)的活跃成员。



 类似资料:
  • 问题内容: 有人知道将SGML转换为XML的方法或库吗? 编辑:为澄清起见,我必须在Java中进行转换,并且无法使用SP解析器或相关的SX工具。 问题答案: 似乎普遍的共识是,没有可用的Java进行SGML工作的库。毫无疑问,经过几天无能为力的搜索Google并在这里提出这个问题之后,我没有找到有关此主题的资源。

  • 问题内容: 是否有现有的JAR可以将JSON转换为XML? 问题答案: 不是Java,而是 纯XSLT 2.0实现 : 看一看在 从 FXSL 2.x库 。 使用此功能非常容易合并JSon并将其用作XML。 例如,可以只编写以下XPath表达式: 并 让所有的孩子用 这是完整的示例: 当上述转换应用于任何XML文档(忽略)时,将产生正确的结果 :

  • 所以我试图转换一个. xml数据源: 转换成. csv但以这种格式格式化 我有重复的元素,比如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列。 我发现了一个工具,我相信它确实可以做到这一点,但我不知道如何设置它 我有两个文件——a。蝙蝠和。罐子在内部。bat我们有以下默认代码: 我不知道该怎么修改这个。有谁能提供一些建议吗?

  • 问题内容: 是否可以使用JavaScript将所有div子级信息转换为XML或JSON? 问题答案: 有一个名为externalHTML的属性。它设置或检索HTML中的对象及其内容。您可以按以下方式使用它。例如: 提示:p是页面正文中的任何标签ID。

  • 问题内容: 是否有在Ruby中将XML转换为JSON的库? 问题答案: 一个简单的把戏: 首先,您需要,然后在使用Rails时可以执行以下操作: 如果您不使用Rails,则可以要求它,并且事情应该顺利进行。 例: