Groovy XmlSlurper:按XML中的属性值查找属性名称

时间:2016-08-22 09:00:11

标签: xml groovy xmlslurper

如何使用Groovy XmlSlurper / XmlParser 按属性值在XML结构中查找属性名称。 假设我们有XML:

<root>
    <item id="Correction">
        <desc value_err="Error_3"></desc>
    </item>
    <item id_err="Error_2">
        <desc />
    </item>
</root>

我需要按值查找属性名称(初始任务:查找属性值类似'Error_'的节点列表)。 例如“Error_2” - &gt; id_err 和“Error_3” - &gt;的 value_err

我发现迭代所有Node属性映射的唯一解决方案。 它有任何GPath吗?

小言:我们无法改变XML的结构。这是外部异常API。

1 个答案:

答案 0 :(得分:4)

您可以直接搜索XML树:

def xmlString = '''<root>
    <item id="Correction">
        <desc value_err="Error_3"></desc>
    </item>
    <item id_err="Error_2">
        <desc />
    </item>
</root>'''

import groovy.xml.*

def xml = new XmlSlurper().parseText(xmlString)

def nodes = xml.'**'.findAll { node ->
    node.attributes().find { it.value.startsWith 'Error_' }
}