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 :

Comment je peux supprimer un noeud tout entier en JDOM


Sujet :

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

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut Comment je peux supprimer un noeud tout entier en JDOM
    Je veux supprimer tout le noeud <record> et son contenu à chaque fois que <method> contient le mot methode1 comment faire?


    Code xml : 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
    18
    19
    20
    21
    22
    23
    24
    <log>
    <record>
      <date>2012-06-04T09:05:58</date>
      <millis>1338793558504</millis>
      <sequence>18</sequence>
      <logger>ssss</logger>
      <level>INFO</level>
      <class>vvvvv</class>
      <method>methode1</method>
      <thread>10</thread>
      <message></message>
    </record>
    <record>
      <date>2012-06-04T09:06:01</date>
      <millis>1338793561008</millis>
      <sequence>61</sequence>
      <logger>rrrrrr</logger>
      <level>INFO</level>
      <class>vvvvv</class>
      <method>Methode2</method>
      <thread>10</thread>
      <message></message>
    </log>
    </record>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pour supprimer un Element a :

    Cela supprimera aussi tout ce qu'il contient, puisque tout ce qu'il contient est attaché à lui, et que lui n'est plus attaché à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    j'ai appliqué mais ça marche pas voila ce que j'ai fait et le résultat.
    shachant que racine est <log> j'ai declaré avant:

    Code java : 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
    18
    19
    20
    21
    22
    static void fichier_ss_SetLocation() throws IOException
    {       
     
    	List<?> listlog = racine.getChildren("record");
    	Iterator<?> i = listlog.iterator();
     
    	Element elt_i;
    	while(i.hasNext()) {
    		elt_i = (Element)i.next();
     
     
    		if (elt_i.getChild("method").getText().equals("method1")) {
    			elt_i.detach();
     
    			}
     
    		System.out.print("c'est fait");
     
    	}
     
     
    	} // Ferme la méthode
    il m'affiche comme ça :

    Exception in thread "main" java.util.ConcurrentModificationException
    at org.jdom.ContentList$FilterListIterator.checkConcurrentModification(ContentList.java:1041)
    at org.jdom.ContentList$FilterListIterator.hasNext(ContentList.java:752)
    at convertion2.convertion2.fichier_ss_SetLocation(convertion2.java:336)
    at convertion2.convertion2.main(convertion2.java:104)


    Je comprends pas le problème.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par sarra2104 Voir le message
    Je comprends pas le problème.
    getChildren() renvoie une liste vivante, c'est-à-dire que modifier cette liste c'est modifier l'objet Document lui-même, et vice-versa.
    Or on ne peut pas à la fois parcourir une List et la modifier.
    Pourtant, en faisant detach() sur l'élément, tu l'enlève du Document, donc de la List que tu es en train de parcourir.
    => D'où le ConcurrentModificationException.

    Dans ce cas-là, il vaut mieux supprimer l'élément de la List, à l'aide de l'Iterator :

    Puisque la List est vivante, supprimer l'élément de la List, c'est le supprimer du Document.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XML] Comment supprimer un noeud
    Par lnplnp dans le forum Modules
    Réponses: 1
    Dernier message: 31/03/2008, 17h46
  2. Réponses: 6
    Dernier message: 15/06/2007, 14h34
  3. [TP]Comment je peux creer un bouton avec Pascal ?
    Par JaVaCode dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 06/12/2004, 18h28
  4. Comment je peux changer nom de 'Table' avec la phrase sql
    Par YEK dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/10/2004, 08h38
  5. Réponses: 3
    Dernier message: 25/07/2002, 10h42

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