Itérer sur CHAQUE nœud xml avec groovy, l'impression de chaque nœud
J'ai une question très simple ( je pense ) fichier xml comme ceci...
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Things>
<thing indexNum='1'>
<a>123</a>
<b>456</b>
<c>789</c>
</thing>
<thing indexNum='2'>
<a>123</a>
<b>456</b>
<c>789</c>
</thing>
</Things>
La question que je me pose, c'est que je ne peut tout simplement pas obtenir à chaque nœud séparément avec ce code... c'est l'impression de TOUTES les choses, et ce que je suis vraiment essayer de faire est de recueillir chaque nœud dans un plan, puis interroger/transformer certaines paires clé/valeur dans la carte et de les remplacer (en bas de la route, je sais..)
Voici mon horrible code... aucune chance que quelqu'un peut m'ont mis dans la bonne direction?
def counter = 0
Things.thing.each { tag ->
counter++
println "\n-------------------------------- $counter ------------------------------------"
Things.thing.children().each { tags ->
println "$counter${tags.name()}: $tags"
return counter
}
println "\n$counter things processed...\n"
}
Serait-il plus facile de manipuler ce à l'intérieur d'une carte? (J'ai généré ce xml avec une carte en premier lieu, en pensant qu'il y aurait des méthodes faciles à travailler avec le XML... je commence à me demander après tourner autour pendant des jours et obtenir essentiellement nulle part)
Merci et Salutations
OriginalL'auteur user2109043 | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle vous continuez à obtenir l'intérieur des nœuds est parce que vous incorrectement itérer sur la liste externe à deux reprises. La boucle interne doit effectuer une itération uniquement sur
tag
:De sortie:
{ thing ->
) devait correspondre exactement... c'est pourquoi je met le chemin complet et le saisissant tout deux fois.La fermeture paramètre est chaque objet de la collection, ici, la balise extérieure.
OriginalL'auteur Dave Newton