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 :

Parser SAX


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Parser SAX
    Bonjour,

    je souhaite parser un document XML, et pour chaque tag rencontré je désire simplement l'afficher et aussi maintenir un compteur de tag.
    Mon fichier XML est créé avec un parser DOM et je suis sur qu'il est valide...
    Lors du parsing du document la methode starteElement devrait pouvoir me permettre de connaitre le nom du tag grace au paramètre localName or a l'execution ce parametre est null, vide...le compteur lui vaut bien la bonne valeur donc la méthode est bien lancé. Si quelqu'un voit pourquoi je n'arrive pas a afficher les tags rencontré... parce que je tourne en rond et trouve pas l'erreur

    Merci d'avance.

    ******************************************************************
    J'ai donc une classe Sax_Parser :
    ******************************************************************
    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
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
     
     
    public class Sax_Parser extends DefaultHandler{
     
        protected String nomFichierXML;
        int cptTag = 0;
     
        /** Cree une nouvelle instance de Sax_Parser */
        public Sax_Parser() {
            setNomFichierXML(null);
        }
        public Sax_Parser(String nfx) {
            setNomFichierXML(nfx);
        }
     
        /** Methodes get et set */
        public String getNomFichierXML() { return nomFichierXML; }
        public void setNomFichierXML(String nfx) { nomFichierXML = nfx; }
     
        /** Methodes d'affichage */
        static protected void trace (String s) {
            System.out.println(s);
        }
        static protected void trace (String Comment, String s) {
            System.out.println(Comment + " : " + s);
        }
        static protected void trace (String s, int i) {
            System.out.println(s + " : " + i);
        }
     
        /** Methodes du ContentHandler */
        public void characters(char[] ch, int start, int length) throws SAXException 
        {
            String chaine = new String(ch,start,length).trim();
            if(chaine.length()>0) trace("@ Carateres",chaine);
        }
        public void startDocument() throws SAXException
        {
            trace("** Debut du document **");
        }
        public void endDocument() throws SAXException
        {
            trace("** Fin du document **");
        }
        public void startElement(java.lang.String uri, java.lang.String localName,java.lang.String qName,Attributes attr) throws SAXException
        {
            trace(" * Debut d'un element ");
            cptTag++;
            trace("++ compteur de tag :",cptTag);
            if(uri!=null && uri.length()>0) trace("   uri", uri);        
            trace("  NomLocal", localName);
            if(uri!=null && uri.length()>0) trace("   NomComplet", qName);
            int nAttr = attr.getLength();
            trace("  Nombre d'attribut",nAttr);
            if(nAttr == 0) return;
            for(int i=0;i<nAttr;i++)
                trace("  attribut n° "+i+ "=" + attr.getLocalName(i) + "avec valeur : "+ attr.getValue(i));
        }
        public void endElement(java.lang.String uri, java.lang.String localName,java.lang.String qName) throws SAXException 
        {
            trace(" * Fin de l'element "+localName);
            cptTag++;
            trace("++ compteur de tag :",cptTag);
        }
     
    }

    ******************************************************************
    et la classe qui l'utilise :

    ******************************************************************

    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
    import Application.Sax_Parser.*;
    import javax.xml.parsers.*;
    import java.io.*;
    import org.xml.sax.*;
     
    public class Applic_Analyse {
     
        /** Creates a new instance of Applic_Analyse */
        public Applic_Analyse() {
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
           Sax_Parser sp = new Sax_Parser("cheminFichier");
           SAXParserFactory spf = SAXParserFactory.newInstance();
     
           try
           {
               System.out.println("Creation du parser");
               SAXParser parser = spf.newSAXParser();
               parser.parse(new File(sp.getNomFichierXML()),sp);
           }
           catch(ParserConfigurationException e)
           {
               System.out.println("Erreur de configuration du parser :" + e.getMessage());
           }
           catch(SAXException e)
           {
               System.out.println("Erreur SAX :" + e.getMessage());
           }
           catch(IOException e)
           {
               System.out.println("Erreur IO :" + e.getMessage());
           }
        }
     
    }

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Je n'ai pas lu le code, mais pour afficher le nom du tag, il faut utiliser le paramètre qName. Je ne sais plus exactement à quoi sert localName.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Bonjour,
    Normalement localName est le nom de l'element et qName le nom complet de l'element dans la hierarchie ou il apparait !!
    Ton fichier XML a t'il une balise racine ?

  4. #4
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par FreshVic
    Bonjour,
    Normalement localName est le nom de l'element et qName le nom complet de l'element dans la hierarchie ou il apparait !!
    Ton fichier XML a t'il une balise racine ?
    C'est étrange ! J'ai découvert les parseurs SAX cet été pendant un stage, j'utilisais qName pour identifier les balises, et ça marchait sans problème. Et j'avais bien une balise racine. Cela mérite investigation...
    En tout cas merci pour l'info.

    Et toi tchouki, cela donne quoi avec qName ?

Discussions similaires

  1. [XML] Problème avec le parser SAX
    Par carmensam dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/08/2009, 16h50
  2. [SAX] Problème Parser SAX - UTF-8
    Par Bogs dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 01/12/2008, 02h51
  3. Problème de parser SAX après déploiement
    Par guenievre dans le forum Java ME
    Réponses: 14
    Dernier message: 10/10/2007, 18h51
  4. [SAX] Parser SAX
    Par Imladir dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 13/01/2006, 17h32
  5. [SAX] Parser SAX : connaitre l'état d'avancement
    Par GLA31 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 26/10/2004, 09h08

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