我从一个经常更新的 XML 文件中获取一些数据,我需要从 XML 文件中获取数据并将其解析为一个数组并以非常特定的方式对其进行排序。
XML 文件看起来像这样。(将显示更多数据,混乱但相似)
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>groupName</groupId>
<artifactId>artifactName</artifactId>
<versioning>
<versions>
<version>abranchname001-A1</version>
<version>abranchname001-A2</version>
<version>abranchname001-A3.ca82a6dff817ec66f44342007202690a93763949</version>
<version>abranchname001-A4</version>
<version>abranchname001-A40</version>
<version>abranchname001-A50.085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7</version>
<version>abranchname001-A61</version>
<version>abranchname001-A64</version>
<version>abranchname001-A70.a11bef06a3f659402fe7563abf99ad00de2209e6</version>
<version>bbranchname003-A200</version>
<version>bbranchname003-A2</version>
<version>bbranchname003-A20</version>
<version>bbranchname003-A22</version>
<version>cbranchname002-Alpha-A20</version>
<version>cbranchname002-Alpha-A200</version>
<version>cbranchname002-Alpha-A22.f3abe64fc121b75f3f0566c73f2f1a4e8fffd68e</version>
<version>cbranchname002-Alpha-A23</version>
</versions>
</versioning>
</metadata>
我需要如下创建一个数组(按分支名称排序+在“-A”之后按数字排序,如果存在周期,则忽略周期之后的内容)
['abranchname001-A70.a11bef06a3f659402fe7563abf99ad00de2209e6',
'abranchname001-A64',
'abranchname001-A61',
'abranchname001-A50.085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7',
'abranchname001-A40',
'abranchname001-A4',
'abranchname001-A3.ca82a6dff817ec66f44342007202690a93763949',
'abranchname001-A2',
'abranchname001-A1',
'bbranchname003-A200',
'bbranchname003-A22',
'bbranchname003-A20',
'bbranchname003-A2',
'cbranchname002-Alpha-A200',
'cbranchname002-Alpha-A23',
'cbranchname002-Alpha-A22.f3abe64fc121b75f3f0566c73f2f1a4e8fffd68e',
'cbranchname002-Alpha-A20']
这就是我所拥有的,我在这个 groovy 脚本中缺少什么?
File xmlfile = new File("./data.xml")
def dataArray = new XmlSlurper().parse(xmlfile).versioning.versions.version.collect{ (it=~/\d+|\D+/).findAll() }.sort().reverse().collect{ it.join() }
assert dataArray == [""] //for testing output
//return dataArray // actual code step