有什么不同的方法将Java对象转换为XML,我知道一个选项是JAXB,但是想知道同样可用的其他方法/工具是什么?
注意:我没有进一步的要求,因此我无法在问题中添加更多内容,但是在这个时候,如果我能够了解将Java转换为XML的不同方法,那将会非常棒吗?
更新:不同的建议方法是:
> javax.xml.bind.Marshaller和javax.xml.bind.Unmarshaller
> XStream
> XMLBean
> JAXB
> Castor
> JIBX
> Apache Digester
现在,在所有建议的方法中,将Java对象转换为XML和XML到Java对象的最佳方法是什么?
解决方法:
JAXB是将Java对象转换为XML的标准和最佳方法.有几种开源实现可用:
> EclipseLink MOXy(我是技术主管)
> Metro(参考实现,包含在Java SE 6中)
> JaxMe
有关JAXB的更多信息,请查看我的博客:
> http://bdoughan.blogspot.com
更新:
什么是最好的方法?
这最终取决于你想要做什么,我将在下面解释:
用例#1 – 从XML模式开始
在此用例中,您具有XML架构,并且您希望生成Java模型.此线程中提到的工具中没有多少支持此用例. XStream for example recommends XMLBeans for this.
提名人:
> JAXB(所有实现) – 使用JAXB注释生成POJO.
> XMLBeans – 生成包含XML绑定逻辑的专有类.
用例#2 – 从java类开始(可以编辑)
在这个用例中,您有更多选择(仅消除了XMLBeans).编辑通常涉及添加注释来控制映射.
提名人:
>除XMLBeans之外的所有人
用例#3 – 从java类开始(无法编辑)
在此用例中,您没有修改模型类的源代码.这要求外部提供元数据,或者使用代码的XML文件.
提名人:
> EclipseLink JAXB(MOXy) – 提供external binding file,可以通过编程方式应用元数据.
> Metro JAXB – 可以利用annox或JAXBIntroductions
> Castor – 提供外部绑定文件
> jibX – 提供外部绑定文件
> XStream – 可以通过编程方式应用元数据
用例#4 – 中间相遇(现有类和模式)
在此用例中,您需要映射到现有XML架构的现有类. EclipseLink MOXy及其XPath based mapping是我所知道的唯一可以处理此用例的工具
提名人:
> EclipseLink JAXB(MOXy)
用例#5 – XML Infoset保存:
在此用例中,您需要保留未映射的内容:注释,处理指令等.
提名人:
> JAXB(所有实现) – 具有Binder功能.
> XMLBeans – 生成的对象模型存储整个XML信息集.
用例#6 – 与JPA的兼容性
JPA是Java持久性的Java标准. JPA有许多概念:复合键,双向关系,延迟加载等,这些都很难与XML绑定解决方案一起使用.例如,任何只通过字段与对象交互的XML工具通常会遇到延迟加载属性的问题.
提名人:
> EclipseLink JAXB(MOXy) – 是built with JPA in mind.
用例#7 – 与XML Web服务的兼容性(JAX-WS)
JAXB是JAX-WS的默认绑定层.
提名人:
> JAXB(实现依赖于JAX-WS提供者)
用例#8 – 与RESTful Web服务的兼容性(JAX-RS)
JAX-RS是基于HTTP协议的JAX-WS的轻量级替代品.请查看以下内容以获取example.
提名人:
> JAXB(所有实现) – 默认绑定层,最容易与JAX-RS一起使用.
>其他 – 您可以利用MessageBodyReader / Writer的概念来使用其他XML工具.
用例#9 – 与Spring的兼容性
Spring有一些内置支持与XML绑定工具集成,请查看以下链接以获取更多信息:
> http://static.springsource.org/spring-ws/docs/0.9.1/reference/oxm.html
提名人:
> JAXB(所有实现)
>蓖麻
> XMLBeans
> jibX
其他要考虑的事情
>该工具是否仍在开发/支持中?听起来很有趣,我看到人们推荐的工具在5年内没有更新.这里提到的一些工具在2年内没有发布.
我选择最好的方法? – JAXB
看看上面的类别,JAXB可能并不总是最适合特定用例(但它总是很合适),但它是唯一可用于所有用例的库.这意味着它总能完成这项工作.另一种方法是为不同的任务使用不同的库,为您提供多个库支持.
我确实领导了一个JAXB实现EclipseLink MOXy,但是MOXy开始作为专有的XML绑定库TopLink OXM. TopLink始终了解标准的好处(即EJB / JPA),并且我们实现了JAXB 1.然后我们(我是代表性的)成为JAXB 2(JSR-222)上的活跃成员.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。