我試圖使用jaxws-maven-plugin
WSDL生成類重命名一個類,但我得到不可編譯的結果。問題是XSD文件,在這裏你可以看到有相同名稱的嵌套的元素之一,這部分:XPath來在瘋狂層次
<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
所以我試圖把一個綁定文件重命名其中一個。當我嘗試使用到重命名counts
元素外item
這樣的:
<jaxb:bindings node="//xs:complexType[@name='TrafficCountsReplyData']//xs:element[@name='counts']//xs:element[@name='item']">
<jaxb:class name="Lulz"/>
</jaxb:bindings>
我得到以下錯誤:
[錯誤]的「// XS XPath計算:複雜類型[@名稱=」 TrafficCountsReplyData '] //的xs:元素[@名稱=' 計數 '] //的xs:元素[@名稱=' 項目']」導致太多(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匹配。沒有綁定文件,我可以生成源代碼。我在綁定文件中有正確的模式,因爲我可以例如重命名由父元素生成的類。
如果我正確地得到它,你已經添加了未命名的元素到xpath,對嗎?我已經嘗試過,現在就像你所建議的那樣,但問題是一樣的......太多的目標節點。如果我在那裏放置了最內層'item'的完整路徑,我仍然會得到'非法類繼承循環'。我也嘗試過使用單斜槓Xpath併爲所有出現的「item」創建綁定條目,但它也沒有幫助。我不確定我可以透露XSD,但是無論如何,完整的模式大約有3MB大小,而我有其他綁定文件可以解決其他問題... – NeplatnyUdaj 2015-03-13 17:38:16