java - JAXB:如何指定complexType由不同的XSD生成的绑定(bind)规则?

标签 java xsd jaxb xjb

我有几个全面的 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/

相关文章:

XSD 扩展复杂类型

web-services - 如何使用 Common Lisp 通过 XSD 调用 Web 服务?

java - 关闭 derby 网络服务器不会删除 db.lck

java - Solr vs 文档编码问题

java - 解码错误 : unexpected element (uri: local:), 预期元素为

java - 如何一起使用 @XmlMixed 、 @XmlElement 和 @XmlValue ?

jaxb marshall 字段作为具有属性的 xml 节点

java - 在多个包中使用用户库中的方法(Java、Eclipse)

java - 使用 Apache POI 来自 Excel 的 HTML 格式化单元格值

java - 使用 JAXB 解码时将空元素转换为 null