我在java中使用XPath 1.0,并希望选择/检查wsdl文档命名空间,但遗憾的是没有设法做到这一点 . 我想选择
-
命名空间xmlns = "http://schemas.xmlsoap.org/wsdl/"表示为"definitions"元素的属性
-
命名空间xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/"表示为"definitions"元素的属性 .
我试过XPath表达式:
- “// namespace :: *”和“/ * / namespace :: *”,这似乎是神秘的,因为它们返回:
"http: //www.w3.org/2001/XMLSchema",
"http: //www.w3.org/XML/1998/namespace" ????? (where does it come from?)
- “/ definitions / @ *”返回:
HelloService
"http ://www.examples.com/wsdl/HelloService.wsdl"
有没有办法在本文档中使用xmlns:soap =“http://schemas.xmlsoap.org/wsdl/soap/”和xmlns =“http://schemas.xmlsoap.org/wsdl/”属性/命名空间XPath的?或者其他一些工具?检查node(attribute)或namespace值是否等于schemas.xmlsoap.org/wsdl/soap(一种正确的名称空间控件)
Wsdl document:
<definitions name="HelloService"
targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:Hello_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address location="http://www.examples.com/SayHello/"/>
</port>
</service>
</definitions>
1 回答
对于第一个:
结果:http://schemas.xmlsoap.org/wsdl/
对于第二个:
结果:http://schemas.xmlsoap.org/wsdl/soap/
您应该记得在java中启用名称空间支持: