Arrays 使用Jax WS从WSDL生成的Java代码没有正确映射数组/列表?
我设法使用Jax-WS从WSDL生成java代码。但是,代码没有按预期工作 我使用能够正确返回结果的SoapUI测试WSDL 比较XMLJava代码和SoupUI,我发现java代码的xml标记不正确 **********使用SoupUI***************Arrays 使用Jax WS从WSDL生成的Java代码没有正确映射数组/列表?,arrays,xml,list,wsdl,jax-ws,Arrays,Xml,List,Wsdl,Jax Ws,我设法使用Jax-WS从WSDL生成java代码。但是,代码没有按预期工作 我使用能够正确返回结果的SoapUI测试WSDL 比较XMLJava代码和SoupUI,我发现java代码的xml标记不正确 **********使用SoupUI*************** <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Con
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
**********使用SoupUI***************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
**********来自Java代码***************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
**********来自Java代码***************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
从上面可以看出,在responseParameters标记下,java代码正在创建ArrayOfRelatedXXX标记NotRelatedxxx。这导致调用失败
对于这种情况,有没有办法正确地生成java代码?我附加了wsdl部分,如下所示。它似乎使用complexType名称ArrayOfRelatedXXX而不是元素名称
**********WSDL************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
**********WSDL************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sun="XXX/" xmlns:sun1="XXX.Contracts/">
<soapenv:Header/>
<soapenv:Body>
<sun:SearchXXX>
<!--Optional:-->
<sun:Identifier>?</sun:Identifier>
<!--Optional:-->
<sun:XXXSearchField>?</sun:XXXSearchField>
<!--Optional:-->
<sun:query>?</sun:query>
<!--Optional:-->
<sun:searchType>?</sun:searchType>
<!--Optional:-->
<sun:responseParameters>
<!--Optional:-->
<sun1:RelatedXXX>
<!--Zero or more repetitions:-->
<sun1:RelatedXXX>?</sun1:RelatedXXX>
</sun1:RelatedXXX>
</sun:responseParameters>
</sun:SearchXXX>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<SearchXXX xmlns="...">
<Identifier>???</Identifier>
<XXXSearchField>???</XXXSearchField>
<query>???</query>
<searchType>???</searchType>
<responseParameters>
<ns2:ArrayOfRelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
<ns2:RelatedXXX>???</ns2:RelatedXXX>
</ns2:ArrayOfRelatedXXX>
</responseParameters>
</SearchXXX>
</S:Body>
</S:Envelope>
<xs:complexType name="ResponseParameters">
<xs:sequence>
<xs:element minOccurs="0" name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ResponseParameters" nillable="true" type="tns:ResponseParameters"/>
<xs:element name="RelatedXXX" nillable="true" type="tns:ArrayOfRelatedXXX"/>
<xs:complexType name="ArrayOfRelatedXXX">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="RelatedXXX" type="tns:RelatedXXX"/>
</xs:sequence>
</xs:complexType>
请帮忙
谢谢