我想检查文件中是否存在某个xml标记,如果存在则执行某些操作,如果不存在则执行其他操作。
我正在迭代这个文件:
def root = new XmlSlurper().parseText(xml)
root.node.each { node ->
println "found node"
}
那么,如果节点不存在,我如何制作某种“else”括号呢?
(XML文件很大,由许多不同的标签组成。我想知道是否存在特定的标签。在本例中,'node'标签)
这样做的一种方法是:
boolean exists = false
def root = new XmlSlurper().parseText(xml)
root.node.each { node ->
exists = true
println "found node"
}
if(exists) {
// do something
}
可以做得更优雅吗?
答案 0 :(得分:1)
您可以使用breadthFirst().any { }
搜索整个xml:
def hasNodeTag(xml) {
new XmlSlurper()
.parseText(xml)
.breadthFirst()
.any { it.name() == "node" }
}
def xml = '''
<html>
<head></head>
<body>
<node></node>
</body>
</html>
'''
if (hasNodeTag(xml) ) {
println "xml has 'node' tag"
}
else {
println "xml doesn't have 'node' tag"
}