我試圖運行wsimport針對WSDL文件,我無法修改。的WSDL的一部分看起來像這樣:wsimport和WSDL重複變量
<xsd:complexType name="Bapiitemex">
<xsd:sequence>
<xsd:element name="ItmNumber" type="n0:numeric6"/>
<xsd:element name="PoItmNo" type="n0:char6"/>
<xsd:element name="Material" type="n0:char18"/>
<xsd:element name="MatEntrd" type="n0:char18"/>
<xsd:element name="ShortText" type="n0:char40"/>
<xsd:element name="NetValue" type="n0:numeric15"/>
<xsd:element name="Currency" type="n0:cuky5"/>
<xsd:element name="Subtotal1" type="n0:numeric15"/>
<xsd:element name="Subtotal2" type="n0:numeric15"/>
<xsd:element name="Subtotal3" type="n0:numeric15"/>
<xsd:element name="Subtotal4" type="n0:numeric15"/>
<xsd:element name="Subtotal5" type="n0:numeric15"/>
<xsd:element name="Subtotal6" type="n0:numeric15"/>
<xsd:element name="SUBTOTAL1" type="n0:decimal23.4"/>
<xsd:element name="SUBTOTAL2" type="n0:decimal23.4"/>
<xsd:element name="SUBTOTAL3" type="n0:decimal23.4"/>
<xsd:element name="SUBTOTAL4" type="n0:decimal23.4"/>
<xsd:element name="SUBTOTAL5" type="n0:decimal23.4"/>
<xsd:element name="SUBTOTAL6" type="n0:decimal23.4"/>
</xsd:sequence>
</xsd:complexType>
的wsimport是不高興由於包括僅在不同的情況下(「Subtotal1」與「SUBTOTAL1」等)的多個元件。特定的錯誤是
java.lang.IllegalArgumentException: trying to create the same field twice: subtotal1
在研究解決這個問題,我試圖運行與「-B-XautoNameResolution」選項的wsimport,但沒有任何效果。看來唯一可能的解決方案是使用外部綁定文件來明確告訴wsimport如何命名變量。但是,我也很難做這項工作。下面是綁定文件,我嘗試使用只是重複的變量之一:
<jxb:bindings version="1.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jxb:bindings node="//xsd:complexType[@name='Bapiitemex']//xsd:element[@name='Subtotal1']">
<jxb:property name="testSubtotal1"/>
</jxb:bindings>
我嘗試過,似乎wsimport的可能不明白什麼,我要求它做。這是不高興我用的「節點」屬性的XPath語法,返回錯誤:
XPath evaluation of "//xsd:complexType[@name='Bapiitemex']//xsd:element[@name='Subtotal1']" results in empty target node
建議,我怎麼能說服的wsimport生成我的Java類給我嗎?