Reputation: 111
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
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