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

XML/XSL et SOAP Discussion :

[SAX] Parser un XML


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut [SAX] Parser un XML
    Bonsoir

    Voila ça fait trois jours que je galère comme pas possible de parser mon prog . je cherche à parser un .xml par sax et impossible d'instancier mon parser . je suis débutante et je souhaite vraiment de l'aide .

    Je vous poste aussi mon XML et la source .JAva
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Ton code est étonnant: le code "traditionnel" passe par une Factory:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SAXParserFactory fabrique = SAXParserFactory.newInstance();
    SAXParser parseur = fabrique.newSAXParser();
     
    File fichier = new File("./fichier.xml");
    DefaultHandler handler = new MonHandler();
    parseur.parse(fichier, handler);
    Tu trouveras toutes les infos dans la faq

    ERE

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut à l'aide s'il vous plait
    j'ai utilisé l'exemple "ExempleSAx" du lien que tu m'as indiqué mais a chaque fois il soulève exception et me sort du programme
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    En utilisant vehicules.xml, cela marche très bien. Attention tu as utilisé localName alors qu'il faut utiliser qNname. Ci-dessous le code final:

    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
     
    package saxxml;
     
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
     
    import javax.xml.parsers.*; 
     
    import java.io.*; 
     
    public class DocumentPrinter extends DefaultHandler implements ContentHandler, ErrorHandler {
     
      public DocumentPrinter() { }
     
     public static void main(String[] args) {
    	     if (args.length == 0) {
    	        System.out.println("Pas de chemin de document XML spécifié.");
    	        System.exit(1);
    	      }
     
     
    	      //DocumentPrinter dp = new DocumentPrinter();
    	      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("vehicules.xml");args[0]
    	          File fichier = new File(args[0]);
    	          DefaultHandler gestionnaire = new DocumentPrinter();
    	          parseur.parse(fichier, gestionnaire);
     
    	          }catch(ParserConfigurationException pce){
    	  	        System.out.println("Erreur de configuration du parseur");
    	  	        System.out.println("Lors de l'appel à newSAXParser()");
    	          }catch(SAXException se){
    	  	        System.out.println("Erreur de parsing");
    	  	        System.out.println("Lors de l'appel à parse()");
    	          }catch(IOException ioe){
    	  	        System.out.println("Erreur d'entrée/sortie");
    	  	        System.out.println("Lors de l'appel à parse()");
    	          }
     
     
    	}	
     
      public void characters(char[] ch, int start, int length) {
        String chars = "";
        for (int i = start; i < start + length; i++)
          chars = chars + ch[i];
     
          if ((chars.trim()).length() > 0)
            System.out.println("Caractères reçus : " + chars);
      }
     
      public void startDocument() {
        System.out.println("Début du document.");
      }
     
      public void endDocument() {
        System.out.println("Fin du document atteinte.");
      }
     
      public void startElement(String namespaceURI, String localName,
        String qName, Attributes atts) {
        System.out.println("Début d'élément: " + qName);
      }
     
      public void endElement(String namespaceURI, String localName,
        String qName) {
        System.out.println("Fin d'élément : " + qName);
      }
     
      public void startPrefixMapping(String prefix, String uri) {
        System.out.println("Correspondance de préfixe : " + prefix);
        System.out.println("URI: " + uri);
      }
     
      public void endPrefixMapping(String prefix) {
        System.out.println("Fin de de la correspondance de préfixe : " + prefix);
      }
     
      public void ignorableWhitespace(char[] ch, int start, int length) {
        System.out.println("Esapce vierge reçu.");
      }
     
      public void processingInstruction(String target, String data) {
        System.out.println("Instruction de traitement recue :");
        System.out.println("Cible : " + target);
        System.out.println("Donnée : " + data);
      }
     
      public void setDocumentLocator(Locator locator) { }
     
      public void skippedEntity(String name) {
        System.out.println("Entité sautée : " + name);
      }
     
      public void error(SAXParseException exception) { }
     
      public void fatalError(SAXParseException exception) { }
     
      public void warning(SAXParseException exception) { }
    }
    EDIT
    ----
    Testé en JDK 5 et 6

    ERE

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    Voilà je joins à ta réponse l'erreur que j'ai eu
    est ce que tu peux me dire ce cela vveux s'il te plaît


    Erreur d'entrée/sortie
    Lors de l'appel à parse()
    ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
    JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    excuse moi Emannuel jje croix que j'ai mis la mauvaise source java je te renvoie la bonne et l'erreur qu'elle me génère:

    java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)org.apache.xerces.parsers.SAXParser

    at java.lang.Class.forName(Unknown Source)
    at saxxml.DocumentPrinter.main(DocumentPrinter.java:25)
    Fichiers attachés Fichiers attachés

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tu as cette erruer parce que la class
    java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
    n'est pas dans ton classpath. Si tu passes par la factory c'est cette dernière qui se chargera de t'instancier la bonne class. Reprends le code que je t'ai fourni.

    ERE

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    salut Emmanuel

    j'ai mis xerce.jar dans Run as/onglet classpath/user Entrie / et maintenant mon prog le voix mais c'est toujour pareil.

    est ce que c'est le bon répertoire . J'utilise Eclipse

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    J'utilise Eclipse
    Dans ce cas, clic droit sur les sources/build path/configure build path/Onglet Libraries/Add External Jar

    Et tu ne veux toujours pas passer par une Factory, hein ? Têtu(e) ?

    ERE

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    Excuse Moi c'est de ma faute,j'ai confondu les codes

    J'ai repris ton code que tu m'as donné et jai testé mais il refuse tours d'instancier le parseur; quand il arrive sur : SAXParser parseur = fabrique.newSAXParser(); il saute et passe sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      }catch(IOException ioe){
    	  	        System.out.println("Erreur d'entrée/sortie");
    	  	        System.out.println("Lors de l'appel à parse()");
    	                     }
    et m'affiche ça :Erreur d'entrée/sortie
    Lors de l'appel à parse()");

    est ce que tu peux me dire pourquoi ?

    Je te remercie pour touts tes efforts

  11. #11
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Essaie d'avoir plus d'infos sur le message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    }catch(IOException ioe){
    ioe.printStackTrace();
    System.out.println("Erreur d'entrée/sortie");
    System.out.println("Lors de l'appel à parse()");
    }
    Ton fichier XML est il dans le bon répertoire ?

    ERE

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    j'ai bien mis mon fichier xml dans le même reperyoir que le fichier DocumentPrinter.java.

  13. #13
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par dess5 Voir le message
    j'ai bien mis mon fichier xml dans le même reperyoir que le fichier DocumentPrinter.java.
    Si tu appelles ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File fichier = new File("vehicules.xml")
    cela implique (par exemple avec Eclipse) que ton fichier soit à la racine de ton projet et non dans le même répertoire que ton fichier JAVA...

    ERE

  14. #14
    Membre confirmé Avatar de smh_master
    Inscrit en
    Août 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 143
    Par défaut
    Salut,
    j'ai l'erreur qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pas de chemin de document XML spécifié.
    je ne sais pas où je vais mettre mon fichier xml pour que le code puisse le lire.
    merci d'avance.

  15. #15
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par smh_master Voir le message
    Salut,
    j'ai l'erreur qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pas de chemin de document XML spécifié.
    je ne sais pas où je vais mettre mon fichier xml pour que le code puisse le lire.
    merci d'avance.
    Salut,

    Est ce la suite du message précédent (12 jours plus tard ?) ou est ce une nouvelle discussion ?

    ERE

Discussions similaires

  1. [SAX] parser un document xml
    Par skyangel dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 11/12/2007, 19h18
  2. [XML] [SAX] parser un fichier XML
    Par namstou3 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/10/2007, 20h06
  3. [XML] [SAX] Comment Parser du XML
    Par Masterlud dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 17/04/2007, 20h26
  4. [XML] [SAX] Parser XML compatible PHP 4 et PHP 5
    Par nako dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/04/2006, 11h14
  5. [XML] [SAX] Parser Xml Universel
    Par sk8world dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 15/11/2005, 10h24

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