2015-05-11 42 views
0

我有以下XML:XMLHolder在Groovy无法检索值

<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> 

我在常规下面的代码返回我空:

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") 

请大家帮帮忙。 谢谢。

回答

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}') 
+0

谢谢@SiKing –