3

我查看了有关使用 Groovy 对 XML 进行排序的文档

def records = new XmlParser().parseText(XmlExamples.CAR_RECORDS)
assert ['Royale', 'P50', 'HSV Maloo'] == records.car.sort{ it.'@year'.toInteger() }.'@name'

但我想做的是对 XML 进行排序,然后返回排序后的 xml 字符串。我知道我可以在完成排序后完全重建 XML。

我知道我可以在 XML 上运行 XML 转换以对其进行排序

def factory = TransformerFactory.newInstance()
def transformer = factory.newTransformer(new StreamSource(new StringReader(xslt)))
transformer.transform(new StreamSource(new StringReader(input)), new StreamResult(System.out))

但我一直在寻找一些 Groovy 魔法来让我更轻松

4

1 回答 1

4

car一种解决方案是直接替换records. 不知道是否存在更多的魔法!

records.value = records.car.sort{ it.'@year'.toInteger() }
println XmlUtil.serialize(records)
于 2010-08-24T21:22:36.043 回答