我有这个xml
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<loginResponse xmlns="http://www.tedial.com/3rdparty/"
xmlns:ns2="http://www.tedial.com/apiextension/">
<session>1C7AE89A-73BF-01E9-9D3F-0010007FFF00</session>
</loginResponse>
</S:Body>
</S:Envelope>
我尝试了很多组合,但无法获取会话值。你能帮我吗?
我没有运气尝试过//S:Envelope//S:Body//ns2:loginResponse//ns2:session
答案 0 :(得分:2)
您在session
元素上使用了错误的命名空间。 loginResponse
-xmlns="http://www.tedial.com/3rdparty/"
的默认名称空间继承到session
元素。您必须使用与相同的名称空间
与loginResponse
一起错误地分配了ns2
命名空间。因此,为http://www.tedial.com/3rdparty/
定义第三个名称空间前缀-在这里我使用了third
-并将其用于loginResponse
和session
:
/S:Envelope/S:Body/third:loginResponse/third:session
答案 1 :(得分:0)
尝试一下:
//S:Envelope//S:Body/loginResponse/session/text()
不需要ns2前缀。
答案 2 :(得分:0)
我现在开始工作了。该问题发生在SoapUI中。由于某种原因,Soap UI会自动使用名称空间作为以ns1开头的默认名称空间。在我的情况下,这个Xpath表达式可以正常工作: // S:信封// S:正文// ns1:loginResponse // ns1:会话