Forum Discussion

jayamsrirama's avatar
jayamsrirama
New Contributor
12 years ago

Need Help! New SOAP UI Pro / SOAP UI Groovy user

Friends,

Need your help for a groovy code which can
1) Load the below XML from the filepath,
2) replace a xml node value - <utility:serviceReferenceId> with a wild card character * value.
3) save the updated xml (full xml with updated node) to same file path or different folder file location.

Tried other options posted in the board but unable to figure out how to save the updated xml file back to same /

different location.

XML is as below:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<_1:requestHeader xmlns:_1="http://www.google.com/utility/1/">
<_1:serviceReferenceId>ef639058aa94a60a-d3e52b992d1a3a0f</_1:serviceReferenceId>
<_1:functionalContext>
<_1:consumerName>CSA-EASConsumer</_1:consumerName>
<_1:userPrincipal>
<_1:userId>UNAUTHENTICATED</_1:userId>
<_1:orgRole>UNAUTHENTICATED</_1:orgRole>
<_1:appRole>UNAUTHENTICATED</_1:appRole>
</_1:userPrincipal>
<_1:target>
<_1:serviceName>ProfileLocator</_1:serviceName>
<_1:serviceOperation>TestProf</_1:serviceOperation>
</_1:target>
</_1:functionalContext>
</_1:requestHeader>
<KD4NS:KD4SoapHeaderV2

xmlns:KD4NS="http://www.ibm.com/KD4Soap">AFIAAgAkNzY1MzI2M2EtYzQ2Ni0zZmNkLWJjM2ItOGVkNTg1MDc3MmU1ACQ3ZDY1ODAzZS0xNTcx

LTM2OTEtOWFmYS03MDdjZGI3NTI5YzIAFA==</KD4NS:KD4SoapHeaderV2>
</soapenv:Header>
<soapenv:Body>
<m:TestProfResponse xmlns:m="http://www.google.com/user/location/userprofile/1/">
<TestProfResponse xmlns="http://www.google.com/user/bi/1/"

xmlns:prof="http://www.google.com/user/profile/1/" xmlns:addr="http://www.google.com/common/address/1/"

xmlns:utility="http://www.google.com/utility/1/" xmlns:psnname="http://www.google.com/common/personname/1/">
<invocationOutcome>
<utility:serviceReferenceId>ef639058aa94a60a-

d3e52b992d1a3a0f</utility:serviceReferenceId>

<utility:code>0</utility:code>
<utility:message>Successful</utility:message>
</invocationOutcome>
</TestProfResponse>
</m:TestProfResponse>
</soapenv:Body>
</soapenv:Envelope>

Tried the below code but couldnt get success saving the updated xml back to file / xmldef groovyUtils = new

com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder("TestProf#Response")
holder.namespaces['utility']='http://www.google.com/utility/1/';
holder.namespaces['m']='http://www.google.com/user/location/userprofile/1/';
holder.namespaces['_1']='http://www.google.com/utility/1/';
holder.namespaces['soapenv']='http://schemas.xmlsoap.org/soap/envelope/';
holder.namespaces['addr']='http://www.google.com/common/address/1/';
holder.namespaces['ns1']='http://www.google.com/user/bi/1/';
holder.namespaces['prof']='http://www.google.com/user/profile/1/';
holder.namespaces['psnname']='http://www.google.com/common/personname/1/';
holder.namespaces['KD4NS']='http://www.ibm.com/KD4Soap'
for( item in holder.getNodeValue( "//utility:serviceReferenceId" ))
{
log.info "Item : [$item]"
holder.setNodeValue("//utility:serviceReferenceId","*")
holder.updateProperty(true)
}
log.info("Node Value: " + holder.getNodeValues( "//utility:serviceReferenceId"))
No RepliesBe the first to reply