如何使用 XmlSlurper 通过标签和属性在 Groovy 中查找所有元素

How to find all elements by a tag and attribute in Groovy using XmlSlurper

我们有一个 xml 如下所示

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GeneratorRun>
<param>
    <comGrp name="Abc">            
        <component name="A">
            <genFiles>
                <file location="xyz/a/b/x.h" checksum="1558926677"/>
                <file location="xyz/a/b/y.h" checksum="2621886660"/>                   
            </genFiles>
        </component>
        <component name="B">
            <genFiles>
                <file location=""xyz/a/b/z.h" checksum="1558926677"/>                   
            </genFiles>
        </component>
    </comGrp>
</param>

我需要获取 genFiles 下的所有文件位置信息。有什么相同的表现。

我目前尝试的是下面没有给出结果的

GPathResult xmlContent = new XmlSlurper().parse(config.genSourceRootDir.resolve('par.xml').toFile())
  List<String> generatedFiles = xmlContent.'**'.genFiles.file.@location.toList()

您需要先找到节点,然后查询它们的属性

像这样:

List<String> generatedFiles = xmlContent.'**'
    .findAll { it.name() == 'genFiles' }
    .file*.collectMany { [it.@location] }.flatten()