JAXB:如何指定复杂类型由不同的 XSD 生成的绑定规则?
JAXB: how to specify that a binding rule that a complexType is generated by a different XSD?
我有几个综合性的 XSDs,其中包含相同成员的相同 complexType 定义。每个 XSD 都有自己的命名空间。因此,当我在 xsd 上 运行 xjc
时,我会在每个命名空间中生成相同的复杂类型 class。
这最终会变得极其混乱和难以处理。我想创建一个绑定,告诉 XJC 不要为其中一个 XSD 生成复杂类型,而是使用另一个 xsd.[=15= 已经生成的 class ]
我尝试了以下但没有成功:
<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
实际上应该是 class com.domain.schema.model.v4_0.sandboxinfo.SandboxType
(来自不同的 XSD)。
正确的语法是什么?
您可以通过 jaxb:class/@ref
实现此目的:
<jaxb:class ref="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />
但是,更好的是,use episodes。使用 -episode
CLI 参数生成,然后将 JAR 添加到 xjc
命令行。
我有几个综合性的 XSDs,其中包含相同成员的相同 complexType 定义。每个 XSD 都有自己的命名空间。因此,当我在 xsd 上 运行 xjc
时,我会在每个命名空间中生成相同的复杂类型 class。
这最终会变得极其混乱和难以处理。我想创建一个绑定,告诉 XJC 不要为其中一个 XSD 生成复杂类型,而是使用另一个 xsd.[=15= 已经生成的 class ]
我尝试了以下但没有成功:
<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
实际上应该是 class com.domain.schema.model.v4_0.sandboxinfo.SandboxType
(来自不同的 XSD)。
正确的语法是什么?
您可以通过 jaxb:class/@ref
实现此目的:
<jaxb:class ref="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />
但是,更好的是,use episodes。使用 -episode
CLI 参数生成,然后将 JAR 添加到 xjc
命令行。