Vraiment suppression de nœuds dans XMLParser Objet Groovy

Comment supprimer un nœud via parseur xml:

 x='''<X>
<A>
 <B c3='1'>
   <C1>a</C1>
   <C2>b</C2>
 </B>
 <B c3='2'>
   <C1>e</C1>
   <C2>e</C2>
 </B>
 <B c3='3'>
   <C1>f</C1>
   <C2>f</C2>
 </B>
</A>
</X>
'''

xml=new XmlParser().parseText(x)
def nodeToDel=xml.A.B.find{it.@C1='a'}
xml.remove(nodeToDel)
println xml
new XmlNodePrinter(new PrintWriter(new FileWriter(new File('c:/temp/a.xml')))).print(xml)

Semble fonctionner MAIS!!!!
comme je l'ai traduit cela à mon problème il encore enregistre le xml d'origine althoguh de retourner true après l'exécution de supprimer la méthode.

J'ai googlé un peu et trouvé ce BUG. Et il me semble que je suis touchés aujourd'hui. Comment puis-je le résoudre? Est-il une solution, ou dois-je revenir aux racines et de commencer à copier linewise...?? Groovy vraiment ungroovy ici :-/

modifier: Comme écrit ci-dessous, et vous avez une expérience à part cela, il n'est pas possible de supprimer la balise où est 'e' de cette façon. Seul le premier Enregistrement sera supprimé. Je pense qu'il y a un problème avec le format xml. N'ayant pas le besoin format:

<A x='1' y='2'></A>

et en avoir dans le format

<A> <x>1</x> <y>2</y> </A>

Est quelqu'un capable de reproduire ce bug?

edit2: je suis en utilisant le GroovyConsole 1.8.0. Ajout de la c3 attributs pour l'exemple. Essayé de le supprimer avec la même méthode, le même bug: La première section a été supprimée...
Maintenant, le plus impressionnant bug: il a Essayé avec un autre code:

def xml=new XmlParser().parseText(x)
xml.A.remove(xml.A.B.find{it.@'c3'= '3'}) //want to remove third section
new XmlNodePrinter(new PrintWriter(new FileWriter(new File('c:/temp/a.xml')))).print(xml)

résultats que la première section de la propriété c3 est modifié pour 3 ?!?!?!?!? wtf...

Je suis en train d'essayer de trouver une solution pour une semaine maintenant, c'est assez épuisant...

Quelqu'un a une idée?

OriginalL'auteur Booyeoo | 2011-08-26