我有几个全面的 XSD,其中包含同一成员的相同的复杂类型定义。每个 XSD 都有自己的命名空间。因此,当我在 xsd 上运行 xjc
时,我会在每个命名空间中生成相同的complexType 类。
这最终会变得极其困惑且难以处理。我想创建一个绑定(bind),告诉 XJC 不要为其中一个 XSD 生成复杂类型,而是使用另一个 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)。
正确的语法是什么?
最佳答案
您可以通过jaxb:class/@ref
实现此目的:
<jaxb:class ref="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />
但是,更好的是,use episodes 。使用 -episode
CLI 参数生成,然后将 JAR 添加到 xjc
命令行。
关于java - JAXB:如何指定complexType由不同的XSD生成的绑定(bind)规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768179/