我正在从xsd文件生成Java类。我有几十个完美的元素/类。但是对于一个类我只想使用自己的类,而不是生成的类。
<xs:element name="mytype">
<xs:complexType>
<xs:all>
<xs:element ref="mytype" minOccurs="0"/>
</xs:all>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="somepattern"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="enum1"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="t2" use="required">
<xs:simpleType>
<xs:restriction base="xs:double"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="t1" use="required">
<xs:simpleType>
<xs:restriction base="xs:double"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
为了设置这些,我读了一些来源并定义了xjb文件,如下所示:
<jaxb:bindings schemaLocation="schema.xsd" node="//xs:schema">
<jaxb:bindings node="xs:element[@name='mytype']">
<jaxb:class implClass="com.package.MyType" name="MyType" />
</jaxb:bindings>
</jaxb:bindings>
简而言之,我只想使用我的类 com.package.MyType 来处理xsd文件中的 mytype 元素。我尝试了一些其他功能,如适配器,但无法解决问题。
当我尝试附加方法时,我在ObjectFactory.java和MyType.java(生成)上遇到不兼容类型错误。因为它试图返回我的类型,但它不是生成类型的子类。
这是ObjectFactory.java上的一行:
public com.autogenerate.MyType createMyType() {
return new com.package.MyType();
}
这是com.autogenerate.MyType.java上的一行:
public com.autogenerate.MyType getMyType() {
return mytype; //com.package.MyType
}
答案 0 :(得分:0)
尝试:
<jaxb:class ref="com.package.MyType"/>
这应该使用com.package.MyType
而不是生成com.autogenerate.MyType
。