使用 Groovy XmlSlurper 查找属性的最大值
Find maximum value of attribute with Groovy XmlSlurper
给定 xml:
<d>
<r1 dt="2011-06-10">
<r11 dt="2012-07-10" />
<r12 rdt="2011-10-11">
<r121 dt="2010-05-13" />
</r12>
</r1>
<r2>
<r21 dt="2011-10-10"><n2 ddt="2012-11-31"/>dt</r21>
<r22 dt="2013-07-10"><n2 ddt="2013-06-31"/>dt</r22>
<r23 dt="2014-06-10"><n2 ddt="2014-03-31"/>dt</r23>
<r24 dt="2015-06-10"><n2 ddt="2011-10-31"/>dt</r24>
</r2>
</d>
我需要使用 Groovy XmlSlurper 在具有最大日期的属性 dt
、rdt
和 ddt
中查找值.在给定的示例中,它将是 2015-06-10
。假设 xml 树结构和深度未知(变化)。是否可以使用 onliner
来完成,或者我应该在我的代码中进行一些迭代?
假设 s
是包含 xml 的字符串:
def x = new XmlSlurper().parseText(s)
然后这将为您提供所有 dt
属性值的列表
def list = x.depthFirst().findAll { it.@dt != "" }.collect {it.@dt}
您可以使用类似的代码来获取所有 rdt
和 ddt
的列表。将它们全部放入一个列表中,然后只得到你能做的最大值:
list.max { a, b ->
new Date().parse("yyyy-MM-dd", a.toString()) <=> new Date().parse("yyyy-MM-dd", b.toString())
}
给定 xml:
<d>
<r1 dt="2011-06-10">
<r11 dt="2012-07-10" />
<r12 rdt="2011-10-11">
<r121 dt="2010-05-13" />
</r12>
</r1>
<r2>
<r21 dt="2011-10-10"><n2 ddt="2012-11-31"/>dt</r21>
<r22 dt="2013-07-10"><n2 ddt="2013-06-31"/>dt</r22>
<r23 dt="2014-06-10"><n2 ddt="2014-03-31"/>dt</r23>
<r24 dt="2015-06-10"><n2 ddt="2011-10-31"/>dt</r24>
</r2>
</d>
我需要使用 Groovy XmlSlurper 在具有最大日期的属性 dt
、rdt
和 ddt
中查找值.在给定的示例中,它将是 2015-06-10
。假设 xml 树结构和深度未知(变化)。是否可以使用 onliner
来完成,或者我应该在我的代码中进行一些迭代?
假设 s
是包含 xml 的字符串:
def x = new XmlSlurper().parseText(s)
然后这将为您提供所有 dt
属性值的列表
def list = x.depthFirst().findAll { it.@dt != "" }.collect {it.@dt}
您可以使用类似的代码来获取所有 rdt
和 ddt
的列表。将它们全部放入一个列表中,然后只得到你能做的最大值:
list.max { a, b ->
new Date().parse("yyyy-MM-dd", a.toString()) <=> new Date().parse("yyyy-MM-dd", b.toString())
}