如何在 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" )