如何检查文件中是否存在XML标记?

时间:2017-05-10 12:15:50

标签: xml groovy

我想检查文件中是否存在某个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
}

可以做得更优雅吗?

1 个答案:

答案 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"
}