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 élément xml [JDOM]


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 41
    Points
    41
    Par défaut Suppression élément xml
    Bonjour,
    J'ai un petit soucis.
    Voilà, j'ai écrit un code pour supprimer des éléments dans un fichier xml déjà créé.
    Exemple de xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <eleves>
        <nom>Dupont</nom>
        <prenom<bernard</prenom>
    </eleves>
    <eleves>
        <nom>martin</nom>
       <prenom> julie</prenom>
    </eleves>
    Par exemple, si je ne veux supprimer que le premier nom (avec dupont), mon code me supprimer dupont ET martin....

    Voilà mon code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     
    public class testSuppr
    {
       static org.jdom.Document document;
       static Element racine;
     
       public static void main(String[] args)
       {
           try
           {
              lireFichier("G:\\testeur.xml");
              supprElement("intitule");
              enregistreFichier("G:\\testeur.xml");
            }
            catch(Exception e){}
       }
     
       //On parse le fichier et on initialise la racine de
       //notre arborescence
       static void lireFichier(String fichier) throws Exception
       {
          SAXBuilder sxb = new SAXBuilder();
          document = sxb.build(new File(fichier));
          racine = document.getRootElement();
       }
     
       //On fait des modifications sur un Element
       static void supprElement(String element)
       {
          //Dans un premier temps on liste tous les types
          List listType = racine.getChildren("type");
          Iterator i = listType.iterator();
          //On parcours la liste grâce à un iterator
          while(i.hasNext())
          {
             Element courant = (Element)i.next();
             //Si le type possède une valeur, on applique la modification
             if(courant.getChild(element)!=null)
             {
                //On supprime l'Element en question
                courant.removeChild(element);
                //On renomme l'Element père sachant qu'une balise XML n'accepte
                //ni les espaces ni les caractères spéciaux
                //"type modifié" devient "type_modifie"
                courant.setName("type_modifie");
             }
          }
       }
     
       //On enregsitre notre nouvelle arborescence dans le fichier
       //d'origine dans un format classique.
       static void enregistreFichier(String fichier) throws Exception
       {
             XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
             sortie.output(document, new FileOutputStream("G:\\testeur.xml"));
     
       }
    }
    Comment je fais si je ne veux supprimer que le premier

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Si tu ne veux vraiment supprimer que le premier de ta liste (et pas un qui porte tel nom), enlève le while.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    C'est pas le premier de la liste que je veux enlever, c'est la première occurence de "nom" que je veux enlever en fait.
    En fait, si c'était plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <eleves valeur="1">
          <nom>dupont</nom>
    </eleves
    <eleves valeur="2">
         <nom>martin</nom>
    </eleves>
    En fait, comment je ferai là si je veux supprimer juste "dupont" et pas "martin" (ou inversement). Faut se servir de la valeur de "eleve". mais je sais pas trop comment modifier mon code pour faire ça.

  4. #4
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Si tu veux supprimer spécifiquement "dupont", alors tu ajoutes une condition dans ta boucle while :

    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
    //On parcours la liste grâce à un iterator
          while(i.hasNext())
          {
             Element courant = (Element)i.next();
             //Si le type possède une valeur, on applique la modification
             if(courant.getChild(element)!=null && courant.getChild(element).equals("dupont"))
             {
                //On supprime l'Element en question
                courant.removeChild(element);
                //On renomme l'Element père sachant qu'une balise XML n'accepte
                //ni les espaces ni les caractères spéciaux
                //"type modifié" devient "type_modifie"
                courant.setName("type_modifie");
             }
          }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    Alors je suis désolée...mais en fait si ma balise "nom" est vide et que je veux la supprimer quand même. En fait, il faudrait faire agir le nom de la balise directement. je suis désolée de t'embêter....ça doit être un peu la même chose je suppose.

  6. #6
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Je ne comprends pas sur quels critères tu veux supprimer la balise. Sur son nom ? Mais son nom est vide ?...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    En fait je voulais dire, si la balise n'a pas de valeur, par exemple :
    <nom></nom>
    et je veux supprimer ça, cette balise, cette ligne!
    Tu vois ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    Ah oui et dans ton code, c'est plutôt ça :
    if(courant.getChild(element)!=null && (courant.getChild(element)).equals(courant.getChild("intitule")))

    Sinon, ils te disent que pour le equals que c'est pas possible parce que les deux types sont différents. Et donc là ça fait ce que je veux (bon, ça marche une fois sur 3, je sais pas trop pourquoi mais si ça a marché une fois c'est que c'est bon je suppose).

    Je te remercie, désolée de t'avoir embéter.

  9. #9
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Mais tu embêtes pas, sinon j'aurais pas répondu

    Essaie d'être clair dans tes demandes, ça ira plus vite ^^

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

Discussions similaires

  1. [JDOM] Problème suppression élément xml
    Par bidulee dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/04/2009, 11h13
  2. Suppression élément XML?
    Par jeepibmx dans le forum Débuter
    Réponses: 9
    Dernier message: 01/08/2008, 14h59
  3. Réponses: 8
    Dernier message: 25/12/2007, 19h37
  4. Suppression élément dans liste
    Par bugmenot dans le forum C
    Réponses: 12
    Dernier message: 06/12/2005, 19h52
  5. Pb ajouter/suppression élément liste
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/09/2005, 15h54

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