本文介绍了解析SOAP响应-XML/XPath(在soapUI中)(SoapUI响应中的命名空间)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我收到如下所示的SOAP响应

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <ns0:SomeResponse xmlns:ns0="urn:ABC:EFG:HIJ:Some_WS">
         <ns0:ID>6384</ns0: ID>
         <ns0:Some_ID>10530</ns0: Some_ID >
         <ns0:Status>SomeStatus</ns0:Status>
         <ns0:Number>INT1037;INT1027;</ns0: Number>
      </ns0:SomeResponse >
   </soapenv:Body>
</soapenv:Envelope>
如何检索Some_ID值。我在SoapUI中使用以下代码来检索Some_ID的值。

...
def response = tstep.getPropertyValue("response");
def gutils = new com.eviware.soapui.support.GroovyUtils( context );
def holder = gutils.getXmlHolder("$response");
// define namespace
holder.namespaces["ns0"] = "http://www.w3.org/2001/XMLSchema-instance"
def val1 = holder.getNodeValue("//ns0:SomeResponse/ns0:Some_ID");
log.info(val1)

但是log.info给了我null值。

推荐答案

若要仅检索该特定值,可以使用简单的:

def val1 = context.expand('${TestStepName#Response#//*:Some_ID}')
对于更复杂的解析,您必须使用XmlHolderXmlParserXmlSlurper。您可以从official documentation了解这些内容。

在您的脚本中,尝试使用tstep.getPropertyValue("Response"),大写R

这篇关于解析SOAP响应-XML/XPath(在soapUI中)(SoapUI响应中的命名空间)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-23 17:11