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 :

Recuperer le resultat d'un parsing SAX [SAX]


Sujet :

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

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut Recuperer le resultat d'un parsing SAX
    Bonjour tout le monde,

    Je suis débutante en JAVA et c'est mon premier post donc je m'excuse si ma question vous paraît naïve!

    J'ai lu toute la Faq xml/java qui m'a bien aidé pour commencer à résoudre mon problème mais je bloque sur la dernière étape.

    J'ai donc un fichier xml contenant une liste d'employés, que je parse grâce à SAX,et les differents employés sont récuperer dans un Vector.

    J'arrive à afficher le contenu de ce Vector sur la sortie standard mais le problème c'est que je n'arrive pas à accéder à ce Vector à partir d'une autre classe.

    Pourriez vous m'aider s'il vous plait???????cela debloquerait toute la suite de mon application!!!!

    Voici 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
    13
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <liste>
    	<employe>
    		<nom>nom0</nom>
    		<prenom>prenom0</prenom>
    		<statut>adresse0</statut>
    	</employe>
    	<employe>
    		<nom>nom1</nom>
    		<prenom>prenom1</prenom>
    		<statut>adresse1</statut>
    	</employe>
    </liste>
    Voici ma classe Emp qui instancie des employés:
    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
    public class Emp extends Pers{
        String statut;
        String login;
        String mdp;
     
        public Emp(){}
     
        public void setStatut(String st){statut=st;}
     
        public void setLogin(String lg){login=lg;}
     
        public void setMdp (String mp)mdp=mp;}
     
        public String getStatut(){return statut;}
     
        public String getLogin(){return login;}
     
        public String getMdp(){return mdp;}
     
        public String detailPersonnel ()
        {
            StringBuffer personnel = new StringBuffer();
            personnel.append(super.toString()).append(" Statut: ").append(statut).append(" Login: ").append(login).append(" Mot de passe: ").append(mdp);
            return personnel.toString();
        }
     
    }
    Et voici ma classe Handler:
    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
    public class EmpHandler extends DefaultHandler{
       
        //résultats du parsing
           private Vector<Emp> listeemployeactuel;
           private Emp employe;
          
           //flags nous indiquant la position du parseur
           private boolean inListe, inEmploye, inNom, inPrenom, inStatut;
          
           // simple constructeur
           public EmpHandler(){
              super();   
           }
          
           //détection d'ouverture de balise
           public void startElement(String uri, String localName,String qName,Attributes attributes)throws SAXException{
              System.out.println(uri+" "+localName+" "+qName);
              if(qName.equals("liste")){
                 listeemployeactuel = new Vector<Emp>();
                 inListe = true;  
              }
              else if(qName.equals("employe")){
                 employe = new Emp();
                 inEmploye = true;   
              }
              else if(qName.equals("nom")){
                 inNom = true;   
              }
              else if(qName.equals("prenom")){
                 inPrenom = true;   
              }
              else if(qName.equals("statut")){
                 inStatut = true;   
              }else
              {
                 //erreur, on peut lever une exception
                 throw new SAXException("Balise "+qName+" inconnue.");   
              }
           }
          
           //détection fin de balise
           public void endElement(String uri,String localName, String qName)throws SAXException{
              if(qName.equals("liste")){
                 inListe = false;
              }
              else if(qName.equals("employe")){
                   listeemployeactuel.add(employe);
                   employe = null;
                 inEmploye = false;   
              }
              else if(qName.equals("nom")){
                 inNom = false;   
              }
              else if(qName.equals("prenom")){
                 inPrenom = false;   
              }
              else if(qName.equals("statut")){
                 inStatut = false;   
              }
              else{
                 //erreur, on peut lever une exception
                 throw new SAXException("Balise "+qName+" inconnue.");   
              }             
           }
    
           //détection de caractères
           public void characters(char[] ch,int start,int length)throws SAXException{
              String lecture = new String(ch,start,length);
              if(inNom){
                 employe.setNom(lecture);   
              }
              else if(inPrenom){
                 employe.setPrenom(lecture);   
              }
              else if(inStatut){
                 employe.setStatut(lecture);   
              }             
           }
          
           //début du parsing
           public void startDocument() throws SAXException {
                 System.out.println("Début du parsing");
           }
           //fin du parsing
           public void endDocument() throws SAXException {
                 System.out.println("Fin du parsing");
                 System.out.println("Resultats du parsing");
                 for(Emp e : listeemployeactuel){
                    System.out.println(e.detailPersonnel());
    //au lieu d'afficher sur la sortie standard les employes (ce qui fonctionne) je désire recuper la listeemployeactuel
                 }
                
         
           }
    
    
           // test
           public static void main(String[] args){
              try{
                 // création d'une fabrique de parseurs SAX
                 SAXParserFactory fabrique = SAXParserFactory.newInstance();
                   
                 // création d'un parseur SAX
                 SAXParser parseur = fabrique.newSAXParser();
                   
                 // lecture d'un fichier XML avec un DefaultHandler
                 File fichier = new File("./ExempleSax.xml");
                 DefaultHandler gestionnaire = new EmpHandler();
                 parseur.parse(fichier, gestionnaire);
    //comment recuperer le vector contenant la liste des employes????
              }catch(ParserConfigurationException pce){
                 System.out.println("Erreur de configuration du parseur");
                 System.out.println("Lors de l'appel à SAXParser.newSAXParser()");
              }catch(SAXException se){
                 System.out.println("Erreur de parsing");
                 System.out.println("Lors de l'appel à parse()");
                 se.printStackTrace();
              }catch(IOException ioe){
                 System.out.println("Erreur d'entrée/sortie");
                 System.out.println("Lors de l'appel à parse()");
              }
           }   
        }
    Voila j'espère que quelqu'un pourra m'aider!!!!Je vous remercie par avance!!!!

    Bonne journée!

  2. #2
    Membre éclairé
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut
    je n'ai pas vu de subtilitées, voici ce qu'il me semble le plus simple :
    légende :
    origine
    //----
    destination
    //-----

    private Vector<Emp> listeemployeactuel;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //----  
    // on créé un getter.
    private Vector<Emp> listeemployeactuel;
    public Vector<Emp> getListeemployeactuel()
    {
        return this.listeemployeactuel;
    }
    //----
    DefaultHandler gestionnaire = new EmpHandler();
    parseur.parse(fichier, gestionnaire);
    //comment recuperer le vector contenant la liste des employes????


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //---- 
    // on utilise la classe EmpHandler qui possede un getter vers
    // la liste construite et on la récupere...
    EmpHandler gestionnaire = new EmpHandler();
    parseur.parse(fichier, gestionnaire);
    //comment recuperer le vector contenant la liste des employes????
    Vector<Emp> listeemployes = gestionnaire.getListeemployeactuel();
    // listeemployes  devrait etre un acces vers ta liste des employés,
    // attention ce n'est pas une copie.
    //----
    Cordialement,

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut
    Ca marche!!!!!!

    j'avais tenté la solution avec le getter mais je l'utilisai mal car j'avais pas pensé à remplacer DefaultHandler par EmpHandler dans l'instanciation du gestionnaire.

    Merci fallo pour ton aide!!! Tu me sauve (presque) la vie!!!

    Encore merci!!!

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

Discussions similaires

  1. [SAX] Recuperer le resultat d"un parsing XML avec SAX
    Par chouxe dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/12/2006, 15h48
  2. Récupérer un résultat oracle dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 09/01/2006, 16h59
  3. Recuperer le resultat d'une commande
    Par vbcasimir dans le forum Linux
    Réponses: 2
    Dernier message: 08/12/2005, 10h11
  4. [c#]Recuperer le resultat d'une requette SELECT @@IDENTITY
    Par MaxiMax dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/07/2005, 17h12
  5. recuperer ler resultat d une procedure stockée
    Par Nadaa dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2004, 08h45

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