如何使用XPath获得子值

时间:2018-06-19 14:52:55

标签: xpath xpath-2.0

我有这个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

3 个答案:

答案 0 :(得分:2)

您在session元素上使用了错误的命名空间。 loginResponse-xmlns="http://www.tedial.com/3rdparty/"的默认名称空间继承到session元素。您必须使用与相同的名称空间 与loginResponse一起错误地分配了ns2命名空间。因此,为http://www.tedial.com/3rdparty/定义第三个名称空间前缀-在这里我使用了third-并将其用于loginResponsesession

/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:会话