-
19 nov. 2004 à 12:29
audreydco
Messages postés2Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention31 mars 2006
-
31 mars 2006 à 10:51
Bonjour,
j'utilise JDOM pour lire et enregistrer des fichiers XML et pour ça je n'ai pas de problème.
Maintenant, j'affiche dans une JList la liste d'éléments contenu dans un élément. Et je veux pouvoir supprimer du fichier les éléments sélectionnés dans la liste mais je n'y arrive pas !!!
Il faut que je précise que tous ces éléments ont le même nom : ce qui les différencient c'est leur attribut "lien" (ce que j'affiche dans la liste).
aOldEtat est un tableau de String : les valeurs des éléments que j'ai sélectionner dans la liste (mon attribut "lien")
for (int aI=0; aI<aOldEtat.length; aI++) {
boolean aTrouve=false;
List aEtats = aListeEtats.getChildren();
Iterator aIterator = aEtats.iterator();
while ((aIterator.hasNext())&&(!aTrouve)) {
Element aEtat = (Element)aIterator.next();
if (aEtat.getAttributeValue("lien").equals((String)aOldEtat[aI])) {
// Element aTemp = (Element)aIterator.next();
aListeEtats.removeContent(aEtat);
aTrouve=true;
}
}
}
Avec ça j'ai l'erreur
java.util.ConcurrentModificationException at
org.jdom.ContentList$FilterListIterator.checkConcurrentModification(ContentList.java:1041)
org.jdom.ContentList$FilterListIterator.hasNext(ContentList.java:752)
provenant de la ligne while ((aIterator.hasNext())&&(!aTrouve))
Je me suis dit qu'après avoir supprimer mon élément l'itérateur ne correspondait plus à rien donc j'ai rajouté
Element aTemp = (Element)aIterator.next();
et il me fait toujours pareil !!!
audreydco
Messages postés2Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention31 mars 2006 19 nov. 2004 à 14:15
J'ai contourné mon pb en remplaçant aListeEtats.removeContent(aEtat); par aEtat.setName("asupprimer"); puis en faisant
aListeEtats.removeChildren("asupprimer"); après être sortie du for. Là plus de problèmes !