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 :

ajout d'éléments et de leur contenu textuel [JDOM]


Sujet :

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

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut ajout d'éléments et de leur contenu textuel
    Bonjour,
    au lieu de repeter plusieurs instructions à chaque fois, j'ai mis des methodes public que je pourai soit utiliser dans la même classe soit en d'hors de cette classe, le problème c'est qu'il y a quelque chose qui va pas dans cette classe
    et une telle instruction "ajoutElement(racine,"Study");" par exemple n'est pas acceptée.
    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
    /*
     * OdmSchéma.java
     *
     * Created on 10 mars 2008, 12:34
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
    
    package ehr4research2;
    
    import java.io.FileOutputStream;
    import org.jdom.*;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
    
    public class OdmSchéma {
        
        
       
       //Nous allons commencer notre arborescence en créant la racine XML qui sera ici "ODM".
           Element racine = new Element("ODM");
    
       //On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
       org.jdom.Document document = new Document(racine);
       
               
          //On crée des nouveaux Elements Study,AdminData,ClinicalData et on les ajoute
          //en temps qu'Element de racine
          ajoutElement(racine,"Study");
          ajoutElement(racine,"AdminData");
          ajoutElement(racine,"ClinicalData");
          
             
        
        // methode d'ajout d'éléments et de son contenu textuel
        public void ajoutElement(Element titre, String element, String texte)
        {   Element elementAjoute = new Element(element);
            elementAjoute.setText(texte);
            titre.addContent(elementAjoute);
        }
        
        // methode d'ajout d'éléments
        public void ajoutElement(Element titre, String element)
        {   Element elementAjoute = new Element("element");
            titre.addContent(elementAjoute);
        }
        
         // methode d'ajout d'atribut et de son contenu textuel
         public void ajoutAtribut(Element titre, String element, String texte)
        {   Attribute atributAjoute = new Attribute(element,texte);
            titre.setAttribute(atributAjoute);
            
        }
        
        // methode d'ajout d'atribut
        public void ajoutAtribut(Element titre, String element) 
        {   Attribute atributAjoute = new Attribute(element,"");
            titre.setAttribute(atributAjoute);
        }
        
        
        public void affiche()
    	{
    	   try
    	   {
    	      //On utilise ici un affichage classique avec getPrettyFormat()
    	      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    	      sortie.output(document, System.out);
    	   }
    	   catch (java.io.IOException e){}
    	}
     
        public void enregistre(String fichier)
        {
           try
           {
              //On utilise ici un affichage classique avec getPrettyFormat()
              XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
              //Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
              //avec en argument le nom du fichier pour effectuer la sérialisation.
              sortie.output(document, new FileOutputStream(fichier));
           }
           catch (java.io.IOException e){}
        }
        
        
        //nom.setText("CynO");
        
    }
    J'ai essayé de mettre un constructeur, mais ça marche pas non plus, je me retourne donc vers vous afin de demander votre aide.

    Je vous remercie d'avance.

  2. #2
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    tu peux coller la stacktrace ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid method declaration; return type required
    J'ai essayé de mettre les methodes static mais j'obtiens la même erreur

  4. #4
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    lol... au temps pour moi je n'avais même pas regardé ton code avant de te demander l'erreur car souvent ça sert a rien. Mais y avait pas besoin de l'erreur ...

    Ce que tu fais ne marchera jamais. En effet tes appels à ajoutElement doivent être placé dans une méthode (un main par exemple). Là, il considère que tu déclare une méthode ajoutElement et donc il te demande de déclarer le type d'objet retourner par cette méthode

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Merci, j'ai fais comme vous m'avez dis:
    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
    /*
     * OdmSchéma.java
     *
     * Created on 10 mars 2008, 12:34
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
    
    package ehr4research2;
    
    import java.io.FileOutputStream;
    import org.jdom.*;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
    
    import java.io.*;
    import org.jdom.*;
    import org.jdom.output.*;
    
    public class OdmSchéma
    {
       //Nous allons commencer notre arborescence en créant la racine XML
       //qui sera ici "personnes".
       static Element racine = new Element("personnes");
    
       //On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
       static org.jdom.Document document = new Document(racine);
    
       public static void main(String[] args)
       {
          //On crée un nouvel Element etudiant et on l'ajoute
          //en temps qu'Element de racine
          ajoutElement2(racine, "etudiant");
          
    
          //On crée un nouvel Attribut classe et on l'ajoute à etudiant
         //grâce à la méthode setAttribute
          ajoutAtribut1(etudiant,"classe","P2");     
          /*
          Attribute classe = new Attribute("classe","P2");
          etudiant.setAttribute(classe);
          */
           
          //On crée un nouvel Element nom, on lui assigne du texte
          //et on l'ajoute en temps qu'Element de etudiant
          ajoutElement1(etudiant, "nom", "CynO");     
          /*
          Element nom = new Element("nom");
          nom.setText("CynO");
          etudiant.addContent(nom);
          */
          //Les deux méthodes qui suivent seront définies plus loin dans l'article
          affiche();
          enregistre("Exercice1.xml");
       }
       
       // methode d'ajout d'éléments et de son contenu textuel
        public static void ajoutElement1(Element titre, String element, String texte)
        {   Element elementAjoute = new Element(element);
            elementAjoute.setText(texte);
            titre.addContent(elementAjoute);
        }
        
        // methode d'ajout d'éléments
        public static void ajoutElement2(Element titre, String element)
        {   Element elementAjoute = new Element("element");
            titre.addContent(elementAjoute);
        }
        
         // methode d'ajout d'atribut et de son contenu textuel
         public static void ajoutAtribut1(Element titre, String element, String texte)
        {   Attribute atributAjoute = new Attribute(element,texte);
            titre.setAttribute(atributAjoute);
            
        }
        
        // methode d'ajout d'atribut
        public static void ajoutAtribut2(Element titre, String element) 
        {   Attribute atributAjoute = new Attribute(element,"");
            titre.setAttribute(atributAjoute);
        }
    
       
        static void affiche()
        {   try
            {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            sortie.output(document, System.out);
            }
            catch (java.io.IOException e){}
        }
        
        static void enregistre(String fichier)
        {   try
            {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            //Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
            //avec en argument le nom du fichier pour effectuer la sérialisation.
            sortie.output(document, new FileOutputStream(fichier));
            }
            catch (java.io.IOException e){}
        }
    
    }
    mais je ne sais pas pourquoi j'ai le message d'erreur suivant au niveau des instruction en gras:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cannot find symbol
    symbol: variabl etudiant
    merci encore

  6. #6
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Et bien ton élément étudiant n'est pas défini. Récupère après sa création l'élément étudiant et ça devrait le faire.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Je vois , mais y'a t'il un moyen pour definir l'element au niveau des ajoutElement.., ça sera plus pratique?

    merci encore

  8. #8
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Si tu veux faire comme ca alors tu redefini ta fonction ajoutElement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Element ajoutElement(Element titre, String element)
        {   Element elementAjoute = new Element("element");
            titre.addContent(elementAjoute);
            return elementAjoute;
        }

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Merci, effectivement j'avais fais presque la même chose avec une petite différence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public static void ajoutElement1(Element titre, String element, String texte)
        {   Element elementAjoute = new Element(element);
            elementAjoute.setText(texte);
            titre.addContent(elementAjoute);
        }
    mais quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ajoutElement(racine,"etudiant");
          ajoutElement(etudiant,"classe");
    l'instruction en gras et considérée comme erreur.
    j'ai essayé de définir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element etudiant = new Element("etudiant");
    à ce moment je n'ai pas d'erreur mais en sortie l'element classe n'apparait pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <ODM>
      <etudiant />
    </ODM>
    alors j'ai défini les deux elements etudiant et classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Element etudiant = new Element("etudiant");
          Element classe = new Element("classe");
    mais ça change rien au niveau du fichier de sortie.

    En fait je peux toujours utliser des instruction simple de l'API JDOM, mais je pense qu'il faut quand même pouvoir utiliser une methode d'ajout d'element ou d'atribut pour optimiser le code.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Voilà donc la solution
    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    /*
     * OdmSchéma.java
     *
     * Created on 10 mars 2008, 12:34
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package ehr4research2;
     
    import java.io.FileOutputStream;
    import org.jdom.*;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
     
    import java.io.*;
    import org.jdom.*;
    import org.jdom.output.*;
     
    public class OdmSchéma
    {
       //Nous allons commencer notre arborescence en créant la racine XML
       //qui sera ici "personnes".
       static Element racine = new Element("ODM");
     
       //On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
       static org.jdom.Document document = new Document(racine);
     
       public static void main(String[] args)
       {
          //On crée des nouveau elements Elements et on les ajoute en temps qu'Elements de racine
          Element etudiant = ajoutElement(racine,"etudiant");
     
          //On crée des nouveaux Attributs et on les ajoute 
          Attribute classe = ajoutAtribut(etudiant,"classe","P2");
     
          //On crée des nouveaux Elements, on leurs assigne du texte et on les ajoute en temps qu'Elements
          Element nom = ajoutElement(etudiant,"nom","testNom");
     
          //Les deux méthodes qui suivent permette d'afficher et d'enregistrer le outPutFile'
          affiche();
          enregistre("Exercice1.xml");
       }
     
        // methode d'ajout d'éléments, retourne un element
        public static Element ajoutElement(Element titre, String element)
        {   Element elementAjoute = new Element(element);
            titre.addContent(elementAjoute);
            return elementAjoute;
        }
     
        // methode d'ajout d'éléments et de son contenu textuel, retourne un element
        public static Element ajoutElement(Element titre, String element, String texte)
        {   Element elementAjoute = new Element(element);
            elementAjoute.setText(texte);
            titre.addContent(elementAjoute);
            return elementAjoute;
        }
     
        // methode d'ajout d'éléments
        public static void ajoutElementVoid(Element titre, String element)
        {   Element elementAjoute = new Element(element);
            titre.addContent(elementAjoute);
        }
     
        // methode d'ajout d'éléments et de son contenu textuel
        public static void ajoutElementVoid(Element titre, String element, String texte)
        {   Element elementAjoute = new Element(element);
            elementAjoute.setText(texte);
            titre.addContent(elementAjoute);
        }
     
        // methode d'ajout d'atribut, retourne un atribut
        public static Attribute ajoutAtribut(Element titre, String element) 
        {   Attribute atributAjoute = new Attribute(element,"");
            titre.setAttribute(atributAjoute);
            return atributAjoute;
        }
     
        // methode d'ajout d'atribut et de son contenu textuel, retourne un atribut
         public static Attribute ajoutAtribut(Element titre, String element,String texte) 
        {   Attribute atributAjoute = new Attribute(element,texte);
            titre.setAttribute(atributAjoute);
            return atributAjoute;
        }
     
     
         // methode d'ajout d'atribut
         public static void ajoutAtributVoid(Element titre, String element)
        {   Attribute atributAjoute = new Attribute(element,"");
            titre.setAttribute(atributAjoute);
     
        }
     
         // methode d'ajout d'atribut et de son contenu textuel
         public static void ajoutAtributVoid(Element titre, String element, String texte)
        {   Attribute atributAjoute = new Attribute(element,texte);
            titre.setAttribute(atributAjoute);
     
        }
     
        static void affiche()
        {   try
            {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            sortie.output(document, System.out);
            }
            catch (java.io.IOException e){}
        }
     
        static void enregistre(String fichier)
        {   try
            {
            //On utilise ici un affichage classique avec getPrettyFormat()
            XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            //Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
            //avec en argument le nom du fichier pour effectuer la sérialisation.
            sortie.output(document, new FileOutputStream(fichier));
            }
            catch (java.io.IOException e){}
        }
     
    }
    cela permet d'avoir le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <ODM>
      <etudiant classe="P2">
        <nom>testNom</nom>
      </etudiant>
    </ODM>
    bon courage

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. [JDOM] Ajout d'éléments triés selon leur nom et problème de redondance.
    Par _fav_ dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/08/2010, 11h24
  3. ajouter des éléments a un select multiple sans effacer le contenu
    Par ziad251 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/05/2008, 15h11
  4. Ajouter un élément dans un textarea sans en supprimer le contenu
    Par xillibit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/06/2007, 09h42
  5. [xsl] Ajouter 1 élément à la page xml
    Par ametisse dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/03/2003, 12h15

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