2017-05-10 21 views
0

ファイルに特定のxmlタグが存在するかどうかをチェックし、存在する場合は何かを行い、存在しない場合は何かを実行します。XMLタグがファイルに存在するかどうかを確認するには?

私はこのようなファイルを反復処理しています:

def root = new XmlSlurper().parseText(xml) 
     root.node.each { node -> 
      println "found node" 
     } 

それでは、どのように私は、ノードが存在しない場合に実行される「他」ブラケットのいくつかの種類を作るのですか?同じことをやっての

(。。XMLファイルが大きいと、多くの異なるタグで構成され、私は、特定のタグが存在するかどうかを知りたい。この例では「ノード」タグ)

一つの方法は、次のようになります。

boolean exists = false 
def root = new XmlSlurper().parseText(xml) 
    root.node.each { node -> 
     exists = true 
     println "found node" 
    } 

if(exists) { 
    // do something 
} 

もっとエレガントにできますか?

+0

あなたはノード/タグが存在している意味ですか?あなたのユースケースは何ですか?あなたが話しているサンプルデータを提供してもらえますか? – Rao

+1

[GroovyのXmlSlurperで要素の存在を確認するにはどうすればよいですか?](http://stackoverflow.com/questions/480431/how-can-i-check-for-the-existence-of-an -element-with-groovys-xmlslurper) – Rao

答えて

1

あなたは、全体のxmlを検索するbreadthFirst().any { }を使用することができます。

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" 
} 
関連する問題