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 avec conservation des fils [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Par défaut Suppression de noeud avec conservation des fils
    Bonjour,

    J'ai un problème un peu bizarre. J'ai une arborescence du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a><b><c>Bla</c></b></a>
    J'aimerais pouvoir la modifier en JDom pour obtenir :

    Donc en bref supprimer un noeud et garder ses fils...qui sont des textes.

    Merci par avance !

  2. #2
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    mets ton code stp

  3. #3
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Par défaut
    Ma fonction de suppression en JDom :

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
    static void supprElement(String element)
       {
    	   //Dans un premier temps on liste tous les étudiants
    	   List<Element> listeElements = racine.getChildren();
    	   Iterator<Element> i = listeElements.iterator();
    	   List<String> champs = new ArrayList<String>();
    	   while(i.hasNext()){
    		   Element courant = (Element)i.next();
    		   if(courant.getName().equals(element)){
    			   String champsFusion = courant.getText();
    			   System.out.println("Champs de fusion : " + champsFusion);
    			   champsFusion = champsFusion.replace("<", "${");
    			   champsFusion = champsFusion.replace(">", "}");
    			   System.out.println("Champs de fusion après modification : " + champsFusion);
    			   champs.add(champsFusion);
    		   }
    	   }
    	   int j = 0;
    	   do{
    		   System.out.println("On insère "+champs.get(j));
    		   racine.addContent(champs.get(j));
    		   j++;
    	   } while(racine.removeChild(element, racine.getNamespace("text")));
       	}
    et mon doc XML (juste la balise qui nous intéresse) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <text:p text:style-name="Standard">
      Bonjour 
      <text:database-display text:table-name="temp" text:table-type="table" text:column-name="MR_MME" text:database-name="temp5"><MR_MME></text:database-display> 
      <text:database-display text:table-name="temp" text:table-type="table" text:column-name="PRENOM" text:database-name="temp5"><PRENOM></text:database-display> 
      <text:database-display text:table-name="temp" text:table-type="table" text:column-name="NOM" text:database-name="temp5"><NOM></text:database-display> 
      !!!
      </text:p>
    J'aimerais en fait ici obtenir ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <text:p text:style-name="Standard">
      Bonjour <MR_MME> <PRENOM> <NOM> !!!
    </text:p>

  4. #4
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    je ne pense pas qu il y est de methode pour qu on puisse garder une arborescence tout en supprimant un noeud quelques part.


    alors tu fais comme ca sauf que :
    avant de supprimer les fils de la racine tu enregistre leur valeur : <MR_MME> ou <PRENOM> ou <NOM> .... c'est a dire leur fils .
    tu supprime et tu met ensuite a la place leur fils


  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Par défaut
    tu met ensuite a la place leur fils
    C'est bien ça que je ne sais pas faire

  6. #6
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    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
    18
    19
     
    //Dans un premier temps on liste tous les étudiants
    	   List<Element> listeElements = racine.getChildren();
    	   Iterator<Element> i = listeElements.iterator();
    	   List<String> champs = new ArrayList<String>();
    //pour tous les element a supprimer	   
    while(i.hasNext()){
    		   Element courant = (Element)i.next();
     
    //on ajoute la valeur champFusion dans la racine a la fin 
    //liste des enfant (y en a q un)
    iterator ite= courant.getChildren.iterator()
    champFusion=ite.next()
    racine.addContent(champFusion)
     
    //la on supprime la ligne dans laquelle on vient de prendre le fils 
    racine.remove(courant)
     
    		   }

    bon les types et la syntax doit y avoir des erreurs mais a mon avis tu peux y arriver avec un truc dans ce style

    et pour verifier les types : JDomDoc

    tiens nous au jus ++

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

Discussions similaires

  1. Remplacer les blocks avec conservations des paramètres
    Par yamin69 dans le forum Simulink
    Réponses: 2
    Dernier message: 22/04/2013, 13h43
  2. Réponses: 5
    Dernier message: 06/07/2011, 00h50
  3. Réponses: 2
    Dernier message: 08/12/2009, 12h41
  4. Découpage de chaine avec conservation des séparateurs
    Par vdelbart dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 26/10/2007, 16h50
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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