Merlin
Merlin

Reputation: 185

Xml Holder how to find a value based on a condition - Groovy

How do I use XML holder in groovy in order to find the Amount that belongs to all instances of Test1 in the xml below?

<BigTest>
  <TestHeader>
    <Name>Test</Name>
    <Amount>5.00</Amount>
  </TestHeader>
  <TestHeader>
    <Name>Test</Name>
    <Amount>10.00</Amount>
  </TestHeader>
  <TestHeader>
    <Name>Test1</Name>
    <Amount>35.00</Amount>
  </TestHeader>
  <TestHeader>
    <Name>Test1</Name>
    <Amount>25.00</Amount>
  </TestHeader>
  <TestHeader>
    <Name>Test2</Name>
    <Amount>5.00</Amount>
  </TestHeader>
</BigTest>

At the moment I am getting a [] response when I try the following:

log.info holder.getDomNodes("//*:TestHeader/*:Amount[Name = 'Test1']/text()").nodeValue

Upvotes: 2

Views: 1023

Answers (1)

Gaurav Khurana
Gaurav Khurana

Reputation: 3946

def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)

def holder=groovyUtils.getXmlHolder("StepName#Response")

def a = holder.getNodeValues("//*:BigTest//*:TestHeader[Name='Test1']//*:Amount")

 for(def var in a)
 {
    log.info var
 }

Just need to replace 'StepName' with your request step.

holder.getNodeValues("//*:BigTest//*:TestHeader[Name='Test1']//*:Amount")

will do it for you

enter image description here

Upvotes: 1

Related Questions