IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Suppression de noeud [DOM4J]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Points : 33
    Points
    33
    Par défaut Suppression de noeud
    Salut à tous!
    J'ai un souci avec dom4j:
    J'ai une méthode qui permet de supprimer un noeud d'une arbo XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void deleteElementToEdit(int elemnIdx)
    {
    //Les noeuds sont stockes dans une Map.
    //Récupération de l'élément à supprimer:
    	Element element = (Element) _elementsToEdit.get(elemnIdx);
    	element.detach();
    }
    En débuggant, j'ai pu vérifier que le noeud que j'essayais de détacher était bien celui que je voulais.
    Mais, quand je regarde le fichier XML résultat, le noeud n'a pas été détaché...En revanche, certains de ses fils l'ont étés mais pas tous...
    ...
    Ma méthode qui réécrit dans le fichier XML de sortie est ultra simple et reprend ce qui est fait dans les tutoriaux de dom4j:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public void updateFile() throws IOException
    {
    	XMLWriter writer = new XMLWriter(new FileWriter(_editFilePath));
    	writer.write(_editedDocument);
    	writer.close();
     
    	// Pretty print the document to System.out
    	OutputFormat format = OutputFormat.createPrettyPrint();
    	writer = new XMLWriter(System.out, format);
    	writer.write(_editedDocument);
     
    	// Compact format to System.out
    	format = OutputFormat.createCompactFormat();
    	writer = new XMLWriter(System.out, format);
    	writer.write(_editedDocument);
    }
    Je précise que j'ai aussi essayé avec la méthode Element:remove(Element)::boolean, et la méthode me retourne bien true, mais j'ai le même résultat...

    Voici le type de fichier XML avec lesquels je travaille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <root>
    	<users>
    		<user id="0">
    			<login>Bob</login>
    			<name>Léponge</name>
    			<password>lawin</password>			
    		</user>            
    	</users>
    </root>
    Le but de ma méthode de suppression est de supprimer un élément "user" dont je connais l'ID. J'utilise XPATH pour récupérer l'élément, et tout ce passe bien à ce niveau là... C'est vraiment quand je veux supprimer un élément, que j'ai pourtant bien identifié, que ça merde...!

    Si quelqu'un peut m'aider, je suis preneur!!

    Merci d'avance!!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Ayé, j'ai trouvé d'où venait mon problême! C'est hyper spécifique à mon appli, mais pour dire quelque chose qui pourra être utile à d'autres voilà en gros ce qui se passait:
    à un autre endroit de mon appli, une méthode essayait d'updater un noeud qui avait déjà été supprimé dans la structure objet, et, plutôt que de jeter une exception, dom4j recréé le noeud en question (en se basant sur quoi, je sais pas, mais probablement des relicats restés en mémoire...)...Du coup, je me retrouvais avec un noeud qui aurait du être supprimé avec juste un noeud fils (celui qui a été updaté à cause d'un mauvais test qui était censé permettre de savoir si l'élément d'édition était en cours de suppression ou non...).
    Voilà!
    J'espère que ça aidera ceux qui auront un problême similaire!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Duplication et suppression de noeud enfant en javascript
    Par kalbo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2008, 16h54
  2. [DOM] problème de suppression de noeuds
    Par -Ju- dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/05/2007, 19h18
  3. [DOM XML] Suppression de noeud XML
    Par xenoox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/05/2006, 03h37
  4. [DOM] - Suppression de noeud.
    Par jacquesh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/02/2006, 11h34
  5. Suppression de noeud en xml
    Par Qapoka dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/09/2005, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo