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 :

Mise à jour d'un fichier XML [SAX]


Sujet :

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

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut Mise à jour d'un fichier XML
    Salut tout le monde.
    J'ai besoin d'aide s'il vous plaît mon travail est arrêté.
    Voilà mon fichier xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <qcm>
      <questions>
          </question num=1>
                </libellé>
                </reponse rnum 1>
                </reponse rnum=2> 
          </question num=2>
                </libellé>
                </reponse rnum=1>
                </reponse rnum=2>  
      </questions>
    </qcm>
    Cette structure vide se créé dés le début de l'application car l'application demande de l'utilisateur de donner le nombre de questions ainsi que les réponses.
    Mais lorsque l'utilisateur saisie les questions je veux modifier ce fichier XML.
    J'ai trouvé une solution dans ce forum mais lorsque je l'a mis toujours il y a ecrasement des question çad toujours les balises de la premiére questions se mettre à jours mais moi je veux passer aux balises de la deuxime questions.
    Autre petit probléme dans la même question je veux passer d'une réponse à une autre mais toujouirs il y a remplacement de la premiére balise.

    Merci pour votre aides.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Commence par nous donner ton code de mise à jour
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut
    Voici mon code, excusez moi je me suis débutant.
    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
     
    package enit.lesclass;
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.util.List;
    import java.util.Iterator;
    import org.jdom.Document;
    import org.jdom.Element.*;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
    import org.jdom.Attribute;
    import org.jdom.Content;
    import java.lang.Integer;
    import java.lang.String;
    import enit.lesclass.nom;
     
    public class modif {
      private String fichierXml="C:/Program Files/glassfish-v2-b58g/domains/domain1/config/qcm.xml";  
      //private Element racine ;
      static Element racine = new Element("questions");
      private Document document;
    nom p=new nom();
    public boolean Ajout(nom p){
         try{
         lireFichier(fichierXml);
         if(!questionExist()){
          ajouter(p);
         }else{
            modifier(p);
         }
         enregistreFichier(fichierXml);
          return true;
         }catch(Exception e){}
         return false;
         }
    public void lireFichier(String fichier) throws Exception
    {
    SAXBuilder sxb = new SAXBuilder();
    document= sxb.build(new File(fichier));
    racine = document.getRootElement();
    }
    public void enregistreFichier(String fichier) throws Exception
    {
    XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    sortie.output(document, new FileOutputStream(fichier));
    }
    public void ajouter(nom p){
      Element question = new Element("question");
      racine.addContent(question);
      Attribute num = new Attribute("num"," ");
      question.setAttribute(num);
      Element libelle = new Element("libelle");
      question.addContent(libelle);
      libelle.setText(p.getlibelle());
     
      Element reponse = new Element("reponse");
      question.addContent(reponse);
     reponse.setText(p.getreponse());                           
      Attribute rep = new Attribute("rep","");
      reponse.setAttribute(rep);
     Attribute rnum = new Attribute("rnum"," ");
     reponse.setAttribute(rnum);                                        		             	   
    }
    public boolean questionExist(){
        List listquestions = racine.getChildren("question");
        if(listquestions.isEmpty())
          return false;
        //On crée un Iterator sur notre liste
        Iterator i = listquestions.iterator();
        while(i.hasNext())
        {
     
        Element courant = (Element)i.next();
       //On affiche le nom de l'element courant
        //Je n'ai pas un moyen de comparaison car j'ai pas de balise 
        //numero de quesrtion mais j'ai un attribut qui indique le numero de la question pourcela la ligne suivante indique une faute
         if(courant.getAttribute("num").getTextTrim().equals(num));
     
          return true;
        }
          return false;
    }
    //////////////////////////////: cette methode permet de faire la mise à jour du question dans le cas ou il existe deja/////////////////////
    public void modifier(nom p){
         List listquestions = racine.getChildren("question");
        //On crée un Iterator sur notre liste
        Iterator i = listquestions.iterator();
        while(i.hasNext())
        {
               Element courant = (Element)i.next();
              courant.getChild("libelle").setText(p.getlibelle());
              courant.getChild("reponse").setText(p.getreponse());
              return;
          }
    }
    }
    La classe java nom contient les getters et les setters.
    Merci.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ta méthode "modifier" prend systématiquement les premiers enfants "libelle" et "réponse" sans prendre en compte l'attribut "num".
    Ta structure XML est un peu bancale. Tu devrais faire quelque chose de plus clair et plus facilement exploitable, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <qcm>
      <question num="1">
        <libelle value="ma premiere question"/>
        <reponse value="ma reponse"/>
      </question>
      <question num="2">
        <libelle value="ma seconde question"/>
        <reponse value="ma reponse a la question 2"/>
      </question>
    </qcm>
    Pour la gestion, il te suffit de trouver le noeud "question" avec un "num" precis, et il contiendra à la fois la question et la réponse.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut
    Merci bien.

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

Discussions similaires

  1. Mise-à-jour d'un fichier xml à partir d'un fichier xls
    Par ch.molines dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 13/02/2013, 18h29
  2. [PHP 5.0] Bug mise à jour d'un fichier XML
    Par eicher dans le forum Langage
    Réponses: 2
    Dernier message: 23/06/2009, 15h22
  3. Mise à jour d'un fichier XML avec Talend
    Par pete666 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 23/02/2009, 14h45
  4. [C#][VS2005]Mise à jour d'un fichier XML
    Par gassisprog dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/05/2008, 12h17
  5. Réponses: 3
    Dernier message: 05/12/2005, 14h17

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