Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
jaxb java类到多个xml映射_Java_Xml_Jaxb - Fatal编程技术网

jaxb java类到多个xml映射

jaxb java类到多个xml映射,java,xml,jaxb,Java,Xml,Jaxb,我有几个java类,我想使用jaxb将它们转换为xml。(我不需要基于模式生成类)我需要能够将类映射到不同的xml格式,因此我不想使用注释。据我所见,我的最佳选择似乎是使用外部xml绑定。所以我想知道: 1) 我正在使用eclipse。我是JAXB新手,我想知道如何使用eclipse集成外部绑定 2) 除了外部xml绑定之外,还有哪些其他选项可用 请参见此处的“将自定义文件传递给JAXB绑定编译器”: 您可以编写一个脚本来集成到Eclipse中。或者您可以使用Maven或Ant任务 您唯一的选

我有几个java类,我想使用jaxb将它们转换为xml。(我不需要基于模式生成类)我需要能够将类映射到不同的xml格式,因此我不想使用注释。据我所见,我的最佳选择似乎是使用外部xml绑定。所以我想知道:

1) 我正在使用eclipse。我是JAXB新手,我想知道如何使用eclipse集成外部绑定

2) 除了外部xml绑定之外,还有哪些其他选项可用

  • 请参见此处的“将自定义文件传递给JAXB绑定编译器”:
  • 您可以编写一个脚本来集成到Eclipse中。或者您可以使用Maven或Ant任务

  • 您唯一的选择是注释或XML绑定

  • 我认为最好的选择是使用MOXy XML绑定:

    这允许您以XML文件的形式而不是以注释的形式定义XMLJava映射:

    <?xml version="1.0" encoding="US-ASCII"?>
    <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
        package-name="example">
    
        <java-types>
            <java-type name="Customer">
                <xml-root-element name="customer-info" />
                <java-attributes>
                    <xml-attribute java-attribute="custId" name="customer-id" />
                    <xml-element java-attribute="picture" name="picture-hex">
                        <xml-schema-type name="hexBinary" />
                        <xml-java-type-adapter
                            value="example.adapters.MyHexConverter" />
                    </xml-element>
                </java-attributes>
            </java-type>
        </java-types>
    
    </xml-bindings>
    
    因此,如果您想为同一个类创建多个不同的映射,只需编写几个XML绑定,并使用相应的文件创建
    JAXBContext
    。我认为这是现在最好的选择,莫西

    使用纯JAXB RI,您可以编写自己的注释阅读器。我曾经用Annox做过一次:

    另一个选项是JBoss JAXBIntroductions,也基于自定义注释读取器:

    但我不确定这是否是现场直播

    因为您需要多个映射,所以必须手动编写它们(除了一个之外)。您可以生成一组映射作为注释,但进一步的映射必须手动编写。或者,比方说,我不知道有什么插件或工具可以生成MOXy-XML绑定。不过写一篇也不是什么大问题

    你也可以采取完全不同的方法。您可以将一个单独的DTO包映射到这些格式上,而不是用不同的映射/格式映射一个中心模型。然后在DTO和中心模型之间进行转换。差不多

    XML(1) <-> DTO(1)|<-\
    XML(2) <-> DTO(2)|<--*->Model
    XML(3) <-> DTO(3)|<-/
    

    XML(1)DTO(1)|绑定文件被传递给JAXB XML模式编译器xjc,这肯定是OP无法做到的,因为他不是从XML模式开始的。@laune抱歉,你错了。在MOXy中有“XML绑定”,它基本上是XML形式注释的替代品:@lexicore将不得不研究它,但这个答案提到了JAXB编译器,OP排除了这一点。因此您的评论应该指向我对这个问题的评论(我已经删除了)。我支持我对这个答案的评论,这个答案并没有解决OPs问题。OP在哪里排除了xjc或模式文件?他说他想使用不同的格式,他可以使用多个模式文件。我遗漏了什么?是的,在我之前研究JBoss时,它似乎过时了,在JAXB不支持外部绑定的时候很有用。我和莫西试了第一种方法。但是我遇到了一些麻烦,因为它似乎没有考虑绑定文件。我把我的问题贴在这里()。如果你能帮忙,我将不胜感激。
    
    XML(1) <-> DTO(1)|<-\
    XML(2) <-> DTO(2)|<--*->Model
    XML(3) <-> DTO(3)|<-/