0

我有一个包含以下元素的 XSD 架构:

<xs:element name="FooResponse" type="commonTypes:Response" />

当我运行构建(其xjc目标是将架构转换为 Java 源)时,不会创建单独的类文件FooResponse.java(可能是因为它与 . 相同Response.java。现在,我知道我可以像这样重写架构:

<xs:element name="FooResponse">
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="commonTypes:Request"/>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

并得到我正在寻找的结果。但是,模式是从工具自动生成的,我宁愿不必手动触摸它。在这种情况下,有没有办法配置插件来创建源文件?

我需要同时获得Response.javaFooResponse.java创建,因为还有其他与FooResponse需要继承无关的类型。

我尝试像这样创建一个 XJB 绑定文件:

<jaxb:bindings version="2.0"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jaxb:bindings schemaLocation="my_schema.xsd" node="/xs:schema/xs:element[@name='FooResponse']">
            <jaxb:class name="FooResponse"/>
    </jaxb:bindings>

</jaxb:bindings>

这有效,因为我得到了两者Response.javaFooResponse.java但内容FooResponse并不完全是我想要的:

public class FooResponse
    extends JAXBElement<Response>
{

    protected final static QName NAME = new QName("initech.com/c/m", "FooResponse");

    public FooResponse(Response value) {
        super(NAME, ((Class) Response.class), null, value);
    }

    public FooResponse() {
        super(NAME, ((Class) Response.class), null, null);
    }

}

如果我让它Response直接扩展而不将其包装成JAXBElement.

4

0 回答 0