我的问题与 Sean Reilly 对以下问题的回答相关: 使用 Groovy 对 XML 文件进行排序
当我更换那里时
rootNode.children().sort(true) {it.attribute('name')}
与
rootNode.Person.sort(true) {it.attribute('name')}
Person 节点不再按名称属性排序。这是为什么?当我将
rootNode.children()
与 rootNode.Person
进行比较时,返回 true 。我正在使用 Groovy 版本 2.4.21。
我希望在这两种情况下 Person 节点都已排序。
您需要执行以下操作之一
rootNode.children().findAll { it.name() == "Person" }.replaceNode {}
rootNode.Person.sort(true) {it.attribute('name')}.each { n -> rootNode.appendNode( n )
}
rootNode.children().sort(true) { a,b ->
a.name() == 'Person' && a.name() == b.name() ? [email protected](b.@name) : (a.name() == 'Person' ? 1 : -1)
}
有点混乱,但本质上是将所有 Person 节点排序在所有其他节点之前,如果两者都是 Person 节点,则比较它们的 @name 属性。