gpt4 book ai didi

java - 使用 axis2 和 java2wdsl 在所有节点中重复命名空间

转载 作者:行者123 更新时间:2023-12-02 11:11:31 25 4
gpt4 key购买 nike

我正在使用 eclipse 和 axis2 1.4.1 侧面来生成 Web 服务。我的问题是,在生成过程中,命名空间在所有节点中重复。如下所示,ns4 被重复而不是在中声明NewOperationResponse 节点。

如何让 java2wdsl(或 eclipse)自动生成(仅在父节点或顶级节点中)?我需要更改 wsdl 或 xsd 上的任何内容吗?

谢谢!

WS 响应

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NewOperationResponse xmlns="http://www.example.org/Test">
<out>
<ns4:areaCode xmlns:ns4="http://www.example.org/Test/Simple">0</ns4:areaCode>
<ns4:exchange xmlns:ns4="http://www.example.org/Test/Simple">0</ns4:exchange>
<ns4:number xmlns:ns4="http://www.example.org/Test/Simple">12</ns4:number>
</out>
</NewOperationResponse>
</soapenv:Body>
</soapenv:Envelope>

WSDL

 <wsdl:types>

<xsd:schema targetNamespace="http://www.example.org/Test"
xmlns:simple="http://www.example.org/Test/Simple"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1">

<xsd:import namespace="http://www.example.org/Test/Simple" schemaLocation="Simple.xsd" />
<xsd:element name="NewOperation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="NewOperationResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="simple:Phone" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

</xsd:schema>
</wsdl:types>

<wsdl:message name="NewOperationRequest">
<wsdl:part element="tns:NewOperation" name="parameters" />
</wsdl:message>
<wsdl:message name="NewOperationResponse">
<wsdl:part element="tns:NewOperationResponse" name="parameters" />
</wsdl:message>

<wsdl:portType name="Test">
<wsdl:operation name="NewOperation">
<wsdl:input message="tns:NewOperationRequest" />
<wsdl:output message="tns:NewOperationResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestSOAP" type="tns:Test">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NewOperation">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Test">
<wsdl:port binding="tns:TestSOAP" name="TestSOAP">
<soap:address location="http://localhost:8084/WSDLProject/services/Test" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

简单.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.org/Test/Simple"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="qualified">

<xs:complexType name="Phone">
<xs:sequence>
<xs:element name="areaCode" type="xs:int" />
<xs:element name="exchange" type="xs:int" />
<xs:element name="number" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>

最佳答案

添加怎么样

<schema elementFormDefaultQualified="false"/> 

里面

<service>

在您的services.xml中?

至少这对我有用,正如您从 SOAP 响应中看到的那样:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:getTelalertByEscalationResponse xmlns:ns="http://ofrick.com"><return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax237:TelalertEntry"><alertDefName xsi:nil="true" /><alertId>1234</alertId><client>cwp1088</client><timeStamp>201405202254</timeStamp><tts>and this is a test tts</tts></return></ns:getTelalertByEscalationResponse></soapenv:Body></soapenv:Envelope>

关于java - 使用 axis2 和 java2wdsl 在所有节点中重复命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2586131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com