如何使用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。
答案 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_' }
}