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 :

Problème lecture fichier xml


Sujet :

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

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut Problème lecture fichier xml
    Bonjour,
    j'ai un petit souci avec la bibliothèque SAX que je ne maitrise pas encore parfaitement .
    J'aimerai savoir comment on peut éviter que la fonction charatere ne considère les espace vide comme des élements de texte dans ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void characters(char[] ch,int start,int length)throws SAXException { 
      String txt = new String(ch,start,length); 
      if(txt != "") { 
        System.out.println("TEXTE : "+ txt); 
      } 
    }
    et j'aimerai savoir s'il est possible de sortir tout le contenu texte (uniquement) compris entre deux balises en precisant le numéro de l'attibut.

    MErci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Avant tout, faire un tour sur la FAQ Java :
    http://java.developpez.com/faq/java/?page=sax
    un très bon petit exemple d’utilisation de SAX

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Points : 113
    Points
    113
    Par défaut
    merci
    le probleme dans cette source c'est que le compilateur Eclipse ne prend pas en compte les listes.
    Faut-il des bibliothèques spéciales??

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Non, le problème qu'il y a (je pense) c'est ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Personne> annuaire;
    Dans l'exemple ils utilisent des generics pour éviter de caster....
    Le "probleme" c'est que cela n'est disponible qu'à partir de la version 5 de Java.

    Mais pour rendre compatible cet exemple avec les versions antérieures du JDK, on peut ecrire :

    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
    126
    127
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
    import javax.xml.parsers.*; 
    import java.io.*; 
    import java.util.*; 
     
    public class PersonneHandler extends DefaultHandler&#123;
       //résultats de notre parsing
       private List annuaire;
       private Personne personne;
       //flags nous indiquant la position du parseur
       private boolean inAnnuaire, inPersonne, inNom, inPrenom, inAdresse;
     
       // simple constructeur
       public PersonneHandler&#40;&#41;&#123;
          super&#40;&#41;;	
     
       &#125;
       //détection d'ouverture de balise
       public void startElement&#40;String uri,
                             String localName,
                             String qName,
                             Attributes attributes&#41;
                      throws SAXException&#123;
          System.out.println&#40;uri+" "+localName+" "+qName&#41;;
          if&#40;qName.equals&#40;"annuaire"&#41;&#41;&#123;
             annuaire = new LinkedList&#40;&#41;;
             inAnnuaire = true;
          &#125;else if&#40;qName.equals&#40;"personne"&#41;&#41;&#123;
             personne = new Personne&#40;&#41;;
             try&#123;
             	int id = Integer.parseInt&#40;attributes.getValue&#40;"id"&#41;&#41;;
                personne.setId&#40;id&#41;;
             &#125;catch&#40;Exception e&#41;&#123;
             	//erreur, le contenu de id n'est pas un entier
                throw new SAXException&#40;e&#41;;
             &#125;
             inPersonne = true;	
          &#125;else if&#40;qName.equals&#40;"nom"&#41;&#41;&#123;
             inNom = true;	
          &#125;else if&#40;qName.equals&#40;"prenom"&#41;&#41;&#123;
             inPrenom = true;	
          &#125;else if&#40;qName.equals&#40;"adresse"&#41;&#41;&#123;
             inAdresse = true;	
          &#125;else&#123;
             //erreur, on peut lever une exception
             throw new SAXException&#40;"Balise "+qName+" inconnue."&#41;;	
          &#125;
       &#125;
       //détection fin de balise
       public void endElement&#40;String uri,
                           String localName,
                           String qName&#41;
                    throws SAXException&#123;
          if&#40;qName.equals&#40;"annuaire"&#41;&#41;&#123;
             inAnnuaire = false;
          &#125;else if&#40;qName.equals&#40;"personne"&#41;&#41;&#123;
          	 annuaire.add&#40;personne&#41;;
          	 personne = null;
             inPersonne = false;	
          &#125;else if&#40;qName.equals&#40;"nom"&#41;&#41;&#123;
             inNom = false;	
          &#125;else if&#40;qName.equals&#40;"prenom"&#41;&#41;&#123;
             inPrenom = false;	
          &#125;else if&#40;qName.equals&#40;"adresse"&#41;&#41;&#123;
             inAdresse = false;	
          &#125;else&#123;
             //erreur, on peut lever une exception
             throw new SAXException&#40;"Balise "+qName+" inconnue."&#41;;	
          &#125;          	
       &#125;
       //détection de caractères
       public void characters&#40;char&#91;&#93; ch,
                           int start,
                           int length&#41;
                    throws SAXException&#123;
          String lecture = new String&#40;ch,start,length&#41;;
          if&#40;inNom&#41;&#123;
             personne.setNom&#40;lecture&#41;;	
          &#125;else if&#40;inPrenom&#41;&#123;
             personne.setPrenom&#40;lecture&#41;;	
          &#125;else if&#40;inAdresse&#41;&#123;
             personne.setAdresse&#40;lecture&#41;;	
          &#125;          	
       &#125;
       //début du parsing
       public void startDocument&#40;&#41; throws SAXException &#123;
       	  System.out.println&#40;"Début du parsing"&#41;;
       &#125;
       //fin du parsing
       public void endDocument&#40;&#41; throws SAXException &#123;
       	  System.out.println&#40;"Fin du parsing"&#41;;
       	  System.out.println&#40;"Resultats du parsing"&#41;;
       	  Personne p;
            for&#40;int i= 0; i<annuaire.size&#40;&#41;;i++&#41;&#123;
                p = &#40;Personne&#41;annuaire.get&#40;i&#41;;
       	     System.out.println&#40;p&#41;;
       	  &#125;
       &#125;
     
       // test
       public static void main&#40;String&#91;&#93; args&#41;&#123;
          try&#123;
             // création d'une fabrique de parseurs SAX
             SAXParserFactory fabrique = SAXParserFactory.newInstance&#40;&#41;;
     
             // création d'un parseur SAX
             SAXParser parseur = fabrique.newSAXParser&#40;&#41;;
     
             // lecture d'un fichier XML avec un DefaultHandler
             File fichier = new File&#40;"./ExempleSAX.xml"&#41;;
             DefaultHandler gestionnaire = new PersonneHandler&#40;&#41;;
             parseur.parse&#40;fichier, gestionnaire&#41;;
     
          &#125;catch&#40;ParserConfigurationException pce&#41;&#123;
             System.out.println&#40;"Erreur de configuration du parseur"&#41;;
             System.out.println&#40;"Lors de l'appel à SAXParser.newSAXParser&#40;&#41;"&#41;;
          &#125;catch&#40;SAXException se&#41;&#123;
             System.out.println&#40;"Erreur de parsing"&#41;;
             System.out.println&#40;"Lors de l'appel à parse&#40;&#41;"&#41;;
             se.printStackTrace&#40;&#41;;
          &#125;catch&#40;IOException ioe&#41;&#123;
             System.out.println&#40;"Erreur d'entrée/sortie"&#41;;
             System.out.println&#40;"Lors de l'appel à parse&#40;&#41;"&#41;;
          &#125;
       &#125;	
    &#125;

Discussions similaires

  1. Problème de lecture fichier xml
    Par chalu133 dans le forum Langage
    Réponses: 0
    Dernier message: 19/09/2014, 11h23
  2. Problème lecture fichier XML
    Par Mercusyo dans le forum C++Builder
    Réponses: 1
    Dernier message: 17/04/2013, 12h19
  3. Problème lecture fichier XML
    Par asnaeb dans le forum C#
    Réponses: 3
    Dernier message: 04/04/2011, 10h10
  4. [SimpleXML] Problème lecture fichier XML en dynamique
    Par moulay73 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/11/2010, 22h43
  5. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 01h40

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