Comment insérer / déplacer / supprimer des noeuds en XML avec Groovy?
par exemple, j'ai le document xml suivant:
def CAR_RECORDS = '''
<records>
<car name='HSV Maloo' make='Holden' year='2006'/>
<car name='P50' make='Peel' year='1962'/>
<car name='Royale' make='Bugatti' year='1931'/>
</records>
'''
et je veux déplacer la voiture "Royale", jusqu'à la première, et l'insertion d'une nouvelle voiture après voiture"HSV Maloo", le résultat serait:
'''
<records>
<car name='Royale' make='Bugatti' year='1931'/>
<car name='HSV Maloo' make='Holden' year='2006'/>
<car name='My New Car' make='Peel' year='1962'/>
<car name='P50' make='Peel' year='1962'/>
</records>
'''
Comment le faire avec Groovy? les commentaires sont les bienvenus.
source d'informationauteur flyisland
Vous devez vous connecter pour publier un commentaire.
Je suis descendu une route similaire à danb, mais a couru dans des problèmes où l'impression les XML. Puis j'ai réalisé que la NodeList qui a été renvoyé en demandant à la racine pour l'ensemble de sa voiture"," les enfants n'est pas la même liste que vous obtenir simplement en demandant la racine de ses enfants. Même s'ils se trouvent être les mêmes listes dans ce cas, ils ne seraient pas toujours s'il n'y avait non "car" les enfants sous la racine. De ce fait, reording la liste des voitures qui reviennent de la requête n'influe pas sur la liste initiale.
Voici une solution qui ajoute et réorganise:
L'affirmation avec la propertly commandé des voitures de passe, et que le XmlNodePrinter sorties:
ted, peut-être que vous n'avez pas remarqué que je voulais ""insérer une nouvelle voiture après voiture"HSV Maloo""', j'ai donc modifier votre code pour :
maintenant, il travaille avec le bon ordre! grâce à danb & ted.
<main-onde>
ce ne sont pas les codz vous cherchez
</main-onde>
Je ne sais pas si il ya une façon plus intelligente pour créer de nouveaux nœuds... mais qui fonctionne pour moi.
EDIT: uhg... merci les gars... je me suis paresseux et l'impression de carNodes quand je l'ai testé ce au lieu de la racine... aïe.