我正在尝试使用JAXB将xsd架构转换为java类。不幸的是我确实遇到了问题。产生问题的xsd是:
<xs:complexType name="AdditionalDataType">
<xs:sequence>
<xs:element name="AvailabilityStatus" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="AvailabilityStatus" maxOccurs="999">
<xs:complexType>
<xs:attributeGroup ref="IdentifierGrp"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdditionalDataType">
<xs:sequence>
<xs:element name="AvailabilityStatus" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="AvailabilityStatus" maxOccurs="999">
<xs:complexType>
<xs:attributeGroup ref="IdentifierGrp"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
我得到的错误是
我找到了How to override the default name for in JAXB using a external binding file?
但是当我尝试使用以下绑定解决它时:
[ERROR] \target\generated-sources\AdditionalDataType.java:[1012,22] AdditionalDataType.AvailabilityStatus is already defined in AdditionalDataType
[ERROR] \target\generated-sources\AdditionalDataType.java:[1012,22] AdditionalDataType.AvailabilityStatus is already defined in AdditionalDataType
它没有帮助,它没有改变任何东西。
有人可以帮忙吗?
@Ekrem 我不能修改xml,我会这样做,但我不能。我需要有一个AdditionalDataType,它具有一个AvailabilityStatus列表 我不在乎内部可用性状态(我试图映射到AvailabilityStatusSA的那个)是否是内部类。
答案 0 :(得分:3)
更改
<jxb:property name="AvailabilityStatusSA"/>
到<jxb:class name="AvailabilityStatusSA"/>
,您的绑定节点路径应以complexType结尾 - &gt; <jxb:bindings node=...[@name='AvailabilityStatus']xs:complexType"
因此您的外部绑定文件应如下所示:
<jxb:bindings node="//xs:complexType[@name='AdditionalDataType']//xs:sequence//xs:element[@name='AvailabilityStatus']//xs:complexType//xs:sequence//xs:element[@name='AvailabilityStatus']//xs:complexType">
<jxb:class name="AvailabilityStatusSA"/>
</jxb:bindings>