我试图运行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类给我吗?