2017-05-10 2 views
0

Je veux vérifier si un certain tag xml existe dans un fichier, et faire quelque chose s'il le fait et quelque chose d'autre s'il n'existe pas.Comment vérifier si le tag XML existe dans le fichier?

J'Itère le fichier comme ceci:

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

Alors, comment puis-je faire une sorte de support « autre » qui exécute si le nœud n'existe pas?

(Le fichier XML est grand et se compose de nombreux tags Je veux savoir si une balise spécifique existe Dans cet exemple, la balise « noeud »..)

Une façon de faire la même chose serait:

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

if(exists) { 
    // do something 
} 

Est-ce que cela peut être fait plus élégant?

+0

Vous voulez dire EXISTE noeud/tag? quel est votre cas d'utilisation? Pourriez-vous fournir des exemples de données dont vous parlez? – Rao

+1

Copie possible de [Comment puis-je vérifier l'existence d'un élément avec XmlSlurper de Groovy?] (Http://stackoverflow.com/questions/480431/how-can-i-check-for-the-existence-of-an -element-with-groovys-xmlslurper) – Rao

Répondre

1

Vous pouvez utiliser breadthFirst().any { } pour rechercher l'ensemble 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" 
}