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 :

Problème 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 Problème suppression élément xml
    Bonjour, j'ai écrit un code pour supprimer un élément dans un fichier XML. Ce code fonctionne, oui....mais qu'une seule fois.
    Si je le lance, ça me supprime l'élément souhaité, mais je ne peux pas faire une deuxième suppression ( je ne peux pas faire d'ajout non plus).Je ne peux vraiment plus rien faire après cette première suppression.

    Voici 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    package com.dis.mercure.struts.actions;
     
     
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.util.List;
    import java.util.Iterator;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.DynaActionForm;
    import org.jdom.Document;
    public class testSuppr_Action extends Action
    {
       static String fichierd;
       static Document document;
       static Element racine;
       static String chemindContent;
       static String elmtdContent;
       static String element;
     
      public testSuppr_Action(){}
     
     
     
     public ActionForward execute(final ActionMapping mapping,
                final ActionForm form,
                final HttpServletRequest request,
                final HttpServletResponse response) throws Exception {
     
         final DynaActionForm theForm = (DynaActionForm) form;
         chemindContent = theForm.getString("chemind");
         elmtdContent =theForm.getString("elmtd");
     
     
     
    try
           {
              lireFichier();
              supprElement();
              enregistreFichier();
            }
            catch(Exception e){ 
            System.out.println(e);
            }
     
            return (mapping.findForward("failure"));
     
     }
     
       public static void main(String[] args){}
     
     
       //On parse le fichier et on initialise la racine de
       //notre arborescence
       static void lireFichier() throws Exception
       {
          SAXBuilder sxb = new SAXBuilder();
          document = sxb.build(new File(chemindContent));
          for(int i=0;i<document.getContentSize();i++){
          }
          racine = document.getRootElement();
       }
     
       //On fait des modifications sur un Element
       static void supprElement()
       {
     
          //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(elmtdContent)!=null )
     
             {
                //On supprime l'Element en question
             courant.removeChild(elmtdContent);
                //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 enregistre notre nouvelle arborescence dans le fichier
       //d'origine dans un format classique.
       static void enregistreFichier() throws Exception
       {
             XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
             sortie.output(document, new FileOutputStream(chemindContent));
     
       }
    }
    D'où vient le problème ?

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    As-tu essayé de fermer le flux de sortie ?
    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
     
    static void enregistreFichier() throws Exception
    {
        FileOutputStream fos = null;
        try
        {
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            fos = new FileOutputStream(chemindContent)
            sortie.output(document, fos);
        }
        catch (Exception e)
        {
        }
        finally
        {
            if (fos != null) fos.close();
        }    
        System.out.println("ça a tout parcouru");
    }

  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
    Je viens d'essayer en ajoutant ton code. Ca ne fonctionne pas non plus...

  4. #4
    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
    J'ai trouvé mon erreur.
    Pour la suppression je fais un "List listType = racine.getChildren("type");" à chaque fois, alors qu'à la fin, je le renomme à la fin en "type_modifie", donc ça ne fonctionne plus....

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

Discussions similaires

  1. [Débutant] Problème suppression élément List(of classe)
    Par GuillaumeNcy dans le forum VB.NET
    Réponses: 7
    Dernier message: 17/04/2014, 14h03
  2. Problème suppression élément d'une collection
    Par drake56 dans le forum Langage
    Réponses: 17
    Dernier message: 29/04/2010, 15h50
  3. [JDOM] Suppression élément xml
    Par bidulee dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 24/04/2009, 20h31
  4. Suppression élément XML?
    Par jeepibmx dans le forum Débuter
    Réponses: 9
    Dernier message: 01/08/2008, 14h59
  5. [DOM XML] Suppression de noeud XML
    Par xenoox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/05/2006, 03h37

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