groovy中的XMLHolder无法检索值

时间:2015-05-11 14:59:45

标签: groovy soapui

我有以下xml:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <SOAP-ENV:Body>
      <Login_v1Response>
         <result xsi:nil="true"/>
         <opSessionID>FjqkjEjipbhkdiin</opSessionID>
      </Login_v1Response>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我在groovy中有以下代码,它返回null:

def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("Step1-Login#response")
log.info holder.getNodeValue("//SOAP-ENV:Envelope/SOAP-ENV:Body/Login_v1Response/opSessionID")

请帮忙。 感谢。

1 个答案:

答案 0 :(得分:2)

您正在脚本中使用名称空间,而不定义这些名称空间。对于只读值,通常更容易使用通配符而不用担心它们。

def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("Step1-Login#Response")
log.info holder.getNodeValue("//*:opSessionID")

甚至更简单的事情:

log.info context.expand('${Step1-Login#Response#//*:opSessionID}')