我跟随此example以使用Soap构建Web服务。有没有办法删除Soap响应的targetNamespace?有了SoapUI,我得到了这个回复:
$(function() {
var href = window.location.href;
$('nav a').each(function(e,i) {
if (href.indexOf($(this).attr('href')) >= 0) {
$(this).addClass('active');
}
});
});
并希望在没有目标命名空间的情况下获得它,例如喜欢:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:getAllResponse xmlns:ns2="http://spring.io/guides/gs-producing-web-service">
<ns2:timestamp>12/18/2015 10:51:02 AM</ns2:timestamp>
<ns2:MyItem>
<ns2:class>myClass</ns2:class>
<ns2:name>MyItemName</ns2:name>
</ns2:MyItem>
</ns2:getAllResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我发送空请求以获取MyItems列表。我的xsd看起来像这样:
...
<MyItem>
<MyItem>
<class>myClass</class>
<name>MyItemName</name>
</MyItem>
MyItem类将自动生成并使用以下内容进行注释:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:tns="http://spring.io/guides/gs-producing-web-service"
targetNamespace="http://spring.io/guides/gs-producing-web-service">
<xs:element name="getAllRequest">
<xs:complexType>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getAllResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="1" name="timestamp" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="MyItem" type="tns:MyItem"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="MyItem">
<xs:sequence>
<xs:element name="class" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
有没有办法在没有目标命名空间的情况下获得响应?我知道它的目的,它实际上非常有用。但事实是它不能被另一个具有此目标命名空间的工具进一步处理,如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyItem", propOrder = {
"class",
"name",
})
public class MyItem { //....
提前致谢!
答案 0 :(得分:0)
这是该问题的最简单解决方案。在模型包中创建Package-Info.Java文件,并在其中添加以下脚本。
@javax.xml.bind.annotation.XmlSchema(namespace = "http://spring.io/guides/gs-producing-web-service", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = { @javax.xml.bind.annotation.XmlNs(namespaceURI = "http://spring.io/guides/gs-producing-web-service", prefix = "") })
package my.com.scicom.stars.model;
并在xsd或wsdl文件中将elementFormDefault添加为“ qualified”。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://spring.io/guides/gs-producing-web-service"
targetNamespace="http://spring.io/guides/gs-producing-web-service"
elementFormDefault="qualified">