shaa0601
shaa0601

Reputation: 111

Find an XML element in Groovy

How do I find an element by it's name ( not by references like: first(); last(); parent() ) in XML soap response?

<xyzOrderReturn>
  <xyzOrderResponse>
    <UlidList>
        <Ulid ExtnUlid="1-222-333">
            <OrderList TotalRecords="0"/>
        </Ulid>
    </UlidList>
  </xyzOrderResponse>
</xyzOrderReturn>

This is what I tried for 'xyzOrderResponse', but none is working...

  def result = new XmlSlurper().parseText(xml)

  def element1 = result.breadthFirst()*.findAll { it.name() == 'xyzOrderResponse' }
  def element2 = result.depthFirst().findAll { it.name() == 'xyzOrderResponse' }

     println element1
     println element2

Upvotes: 1

Views: 2015

Answers (1)

tim_yates
tim_yates

Reputation: 171084

Both of those work, they just don't show when you print the list, but the list has size 1 and:

def result = new XmlSlurper().parseText(xml)

def element1 = result.breadthFirst().findAll { it.name() == 'xyzOrderResponse' }
def element2 = result.depthFirst().findAll { it.name() == 'xyzOrderResponse' }

println element1*.name()
println element2*.name()

prints

[xyzOrderResponse]
[xyzOrderResponse]

You can also replace the depthFirst variant with:

def element2 = result.'**'.findAll { it.name() == 'xyzOrderResponse' }

Upvotes: 2

Related Questions