在Groovy中查找XML元素
如何在XMLSOAP响应中通过元素的名称(而不是像:first();last();parent()这样的引用)查找元素在Groovy中查找XML元素,xml,groovy,Xml,Groovy,如何在XMLSOAP响应中通过元素的名称(而不是像:first();last();parent()这样的引用)查找元素 <xyzOrderReturn> <xyzOrderResponse> <UlidList> <Ulid ExtnUlid="1-222-333"> <OrderList TotalRecords="0"/> </Ulid> <
<xyzOrderReturn>
<xyzOrderResponse>
<UlidList>
<Ulid ExtnUlid="1-222-333">
<OrderList TotalRecords="0"/>
</Ulid>
</UlidList>
</xyzOrderResponse>
</xyzOrderReturn>
这两种方法都有效,只是在打印列表时不会显示,但列表大小为1,并且:
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()
印刷品
[xyzOrderResponse]
[xyzOrderResponse]
您还可以将depthFirst变量替换为:
def element2 = result.'**'.findAll { it.name() == 'xyzOrderResponse' }
谢谢是否要从输出中删除[]?当然,使用
find
而不是findAll
返回单个元素而不是列表。确定。我们可以通过.replaceAll(“[\\[\]]”,“”)删除方括号。我计划将结果与另一个字符串进行比较。例如:log=element1*.name()def result=log.replaceAll(“[\[\]]”),String svc=“xyzOrderResponse”if(svc!=result){send email notification.execute()}是的,只需使用find
获取单个元素。不要使用findAll
获取列表,将其转换为字符串,然后破解该字符串find
和元素。name()
是前进的方向
def element2 = result.'**'.findAll { it.name() == 'xyzOrderResponse' }