如何在 SOAPUI 中使用 setNodeValue 更新 XML 请求
How to use setNodeValue in SOAPUI to update XML request
我是 SOAPUI 的新手,有几个简单的 XML 请求链接在一起。我想使用 Groovy 脚本更新请求端的现有节点。
例如,我有 GetRefData 开始:
<soapenv:Envelope xmlns:soapenv="aaa" xmlns:abc="bbb">
<soapenv:Header>
<abc:RequestHeader>
<CountryCode>US</CountryCode>
<MsgType>GetRefRq</MsgType>
</abc:RequestHeader>
</soapenv:Header>
etc...
我阅读了没有问题的回复:
def GetRequestID = context.expand( '${GetRefData#Response#declare namespace abc=\'bbb\'; //abc:GetRefRq/MsgRqHeader/RequestId[1]}' )
如何将初始请求的 RequestId 从 12345 更新为 53421?我试过:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def request = context.expand('GetRefData#Request');
def requestHolder = groovyUtils.getXmlHolder(request);
requestHolder.namespaces["abc"] = "bbb";
def mypath = "//abc:GetRefRq/MsgRqHeader/RequestId[1]"
requestHolder.setNodeValue( mypath, "54321" )
但是当我 运行 它时,虽然我没有收到错误也没有更新。
有人可以为这个菜鸟指出正确的方向吗?
试试这个 :)
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def request = context.expand('GetRefData#Request');
def requestHolder = groovyUtils.getXmlHolder(request);
//namespace declaration
// assuming your node is <bbb:RequestId>12345</bbb:RequestId>
def ns = "bbb"
requestHolder.setNodeValue("//"+ns+":RequestId", "54321" )
//to verify
log.info requestHolder.getNodeValue("//ns:RequestId" )
我是 SOAPUI 的新手,有几个简单的 XML 请求链接在一起。我想使用 Groovy 脚本更新请求端的现有节点。
例如,我有 GetRefData 开始:
<soapenv:Envelope xmlns:soapenv="aaa" xmlns:abc="bbb">
<soapenv:Header>
<abc:RequestHeader>
<CountryCode>US</CountryCode>
<MsgType>GetRefRq</MsgType>
</abc:RequestHeader>
</soapenv:Header>
etc...
我阅读了没有问题的回复:
def GetRequestID = context.expand( '${GetRefData#Response#declare namespace abc=\'bbb\'; //abc:GetRefRq/MsgRqHeader/RequestId[1]}' )
如何将初始请求的 RequestId 从 12345 更新为 53421?我试过:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def request = context.expand('GetRefData#Request');
def requestHolder = groovyUtils.getXmlHolder(request);
requestHolder.namespaces["abc"] = "bbb";
def mypath = "//abc:GetRefRq/MsgRqHeader/RequestId[1]"
requestHolder.setNodeValue( mypath, "54321" )
但是当我 运行 它时,虽然我没有收到错误也没有更新。
有人可以为这个菜鸟指出正确的方向吗?
试试这个 :)
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def request = context.expand('GetRefData#Request');
def requestHolder = groovyUtils.getXmlHolder(request);
//namespace declaration
// assuming your node is <bbb:RequestId>12345</bbb:RequestId>
def ns = "bbb"
requestHolder.setNodeValue("//"+ns+":RequestId", "54321" )
//to verify
log.info requestHolder.getNodeValue("//ns:RequestId" )