我有一个包含以下元素的 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.java
并FooResponse.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.java
,FooResponse.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
.