我正在尝试使用 wsdl 从生成类jaxws-maven-plugin
,但我得到了无法编译的结果。问题是其中一个 xsd 的这一部分,您可以在其中看到具有相同名称的嵌套元素:
<xs:complexType name="TrafficCountsReplyData" abstract="true">
<xs:sequence>
<xs:element name="effectiveTrafficWindow" type="common:DateTimeMinutePeriod" minOccurs="1" maxOccurs="1"/>
<xs:element name="flows" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="flow:Flow" minOccurs="0" maxOccurs="100"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="counts" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="1440">
<xs:complexType>
<xs:sequence>
<xs:element name="key" type="common:DateTimeMinutePeriod" minOccurs="1"
maxOccurs="1"/>
<xs:element name="value" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="1" maxOccurs="3">
<xs:complexType>
<xs:sequence>
<xs:element name="key" type="flight:TrafficType"
minOccurs="1" maxOccurs="1"/>
<xs:element name="value" type="flow:Counts" minOccurs="1"
maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
如您所见,有多个名为item
. 这导致在单个类中具有相同名称的多个内部类TrafficCountsReplyData
因此,我正在尝试将一个绑定文件放在一起,该文件将重命名其中一个。当我尝试使用以下方法重命名元素中的外部item
时:counts
<jaxb:bindings node="//xs:complexType[@name='TrafficCountsReplyData']//xs:element[@name='counts']//xs:element[@name='item']">
<jaxb:class name="Lulz"/>
</jaxb:bindings>
我收到以下错误:
[错误] XPath 评估“//xs:complexType[@name='TrafficCountsReplyData']//xs:element[@name='counts']//xs:element[@name='item']”也会导致许多 (2) 个目标节点
当我像这样为内部创建绑定 xpath 表达式时:
<jaxb:bindings node="//xs:complexType[@name='TrafficCountsReplyData']//xs:element[@name='counts']//xs:element[@name='item']//xs:element[@name='value']//xs:element[@name='item']">
然后我收到以下错误:
java.lang.IllegalArgumentException:非法类继承循环。外部类 Lulz 不能从内部类继承:Lulz
我不知道如何使这项工作。传承从何而来?item
元素中还有另一个flows
,但 Xpath 不应该匹配。没有绑定文件,我可以生成源代码。我在绑定文件中有正确的模式,因为我可以重命名由父元素生成的类。