Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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的转换?_Java_Xml_Serialization - Fatal编程技术网

Java到XML的转换?

Java到XML的转换?,java,xml,serialization,Java,Xml,Serialization,将Java对象转换为XML有哪些不同的方法,我知道其中一个选项是JAXB,但我想知道其他的方法/工具可用于相同的转换 注意:我没有进一步的要求,因此我无法在问题中添加更多的meat,但现在,如果我能了解到将Java转换为XML有哪些不同的方法,那就太好了 更新:不同的建议方法包括: 及 现在,在所有建议的方法中,将Java对象转换为XML和XML转换为Java对象的最佳方法是什么?您始终可以使用javax.XML.bind.Marshaller和javax.XML.bind.Unma

Java对象
转换为
XML
有哪些不同的方法,我知道其中一个选项是
JAXB
,但我想知道其他的
方法/工具
可用于相同的转换

注意:我没有进一步的要求,因此我无法在问题中添加更多的
meat
,但现在,如果我能了解到将
Java转换为XML有哪些不同的方法,那就太好了

更新:不同的建议方法包括:


  • 现在,在所有建议的方法中,将
    Java对象转换为XML
    XML转换为Java对象的最佳方法是什么?

    您始终可以使用
    javax.XML.bind.Marshaller
    javax.XML.bind.Unmarshaller
    接口自己完成

    这并不像听起来那么疯狂。这并不是很难做到,你将完全控制和了解所做的事情

    我愿意承认,许多人更喜欢自动化方法。我的提议不受欢迎


    我过去使用过XStream,并且很喜欢它,但是当我使用它时,我不必担心XML名称空间。我听说XStream不能很好地处理它们。

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

    • (我是技术负责人)
    • (参考实现,包含在JavaSE6中)
    有关JAXB的更多信息,请查看我的博客:

    更新:

    最好的方法是什么?

    这最终取决于您试图做什么,我将在下面解释:

    用例#1-从XML模式开始

    在这个用例中,您有一个XML模式,并且希望生成一个Java模型。本线程中提到的工具中没有多少支持此用例

    提名人:

    • JAXB(所有实现)-使用JAXB注释生成POJO
    • XMLBeans—生成包含XML绑定逻辑的专有类
    用例#2-从Java类开始(您可以编辑)

    在这个用例中,您有更多的选择(只有XMLBeans被删除)。编辑通常包括添加注释以控制映射

    提名人:

    • 除了豆子,人人都喜欢
    用例#3-从Java类开始(您不能编辑)

    在本用例中,您没有修改模型类的源。这要求元数据在外部以XML文件的形式(按代码)提供

    提名人:

    • EclipseLink JAXB(MOXy)-提供了一种新的元数据,可以通过编程应用元数据
    • Metro JAXB-可以利用Annox或JAXB导入
    • Castor-提供外部绑定文件
    • JiBX-提供一个外部绑定文件
    • XStream-元数据可以通过编程方式应用
    用例#4-中间相遇(现有类和模式)

    在本用例中,您有需要映射到现有XML模式的现有类。EclipseLink MOXy及其应用程序是我所知道的唯一能够处理此用例的工具

    提名人:

    • 日食JAXB(MOXy)
    用例5-XML信息集保存:

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

    提名人:

    • JAXB(所有实现)-具有该特性
    • XMLBeans—生成的对象模型存储整个XML信息集
    用例#6-与JPA的兼容性

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

    提名人:

    • EclipseLink JAXB(MOXy)-是
    用例#7-与XML Web服务(JAX-WS)的兼容性

    JAXB是JAX-WS的默认绑定层

    提名人:

    • JAXB(实现取决于JAX-WS提供程序)
    用例#8-与RESTful Web服务(JAX-RS)的兼容性

    JAX-RS提供了一种基于HTTP协议的JAX-WS的轻量级替代方案。请查看以下内容以获取详细信息

    提名人:

    • JAXB(所有实现)-默认绑定层,最容易与JAX-RS一起使用
    • 其他一切—您可以利用MessageBodyReader/Writer的概念来使用其他XML工具
    用例#9-与Spring的兼容性

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

    提名人:

    • JAXB(所有实现)
    • 脚轮
    • XMLBeans
    • 吉布斯
    需要考虑的其他事项

    • 该工具是否仍在开发/支持中?听起来很有趣,但我见过有人推荐5年没更新过的工具。这里提到的一些工具已经两年没有发布了
    我选择的最佳方法?-JAXB

    综上所述,JAXB可能并不总是最适合某个特定用例(但它总是非常适合),但它是唯一可以用于所有用例的库。这意味着它总能完成任务。另一种方法是为不同的任务使用不同的库,这样可以提供多个