JAXB:如何指定由不同的XSD生成complexType的绑定规则?

时间:2015-09-24 18:12:23

标签: java xsd jaxb xjb

我有几个全面的XSD,它们包含同一成员的相同complexType定义。每个XSD都有自己的命名空间。因此,当我在xsds上运行xjc时,我会在每个命名空间中生成相同的complexType类。

这最终会让人感到非常困惑和复杂。我想创建一个绑定,告诉XJC不要为其中一个XSD生成complexType,而是使用已经由其他xsd生成的类。

我尝试了以下但没有成功:

   <jaxb:bindings schemaLocation="../xsd/sandboxlist.xsd">
        <jaxb:bindings node="/xsd:schema">
            <jaxb:schemaBindings>
                <jaxb:package name="com.domain.schema.model.v4_0.sandboxlist"/>
            </jaxb:schemaBindings>
        </jaxb:bindings>
        <jaxb:bindings node="//xsd:complexType[@name='SandboxType']">
            <jaxb:class name="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />
        </jaxb:bindings>
    </jaxb:bindings>

我想告诉XJC,sandboxlist.xsd中的SandboxType实际上应该是类com.domain.schema.model.v4_0.sandboxinfo.SandboxType(来自不同的XSD)。

这个的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

您可以通过jaxb:class/@ref

实现此目的
<jaxb:class ref="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />

但是,更好,use episodes。使用-episode CLI参数生成,然后将JAR添加到xjc命令行。