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 :

parsing avec sax [SAX]


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut parsing avec sax
    salut,

    j'ai un fichier xml a 'parser' avec sax. et je veux savoir comment configurer la fonction characters(char[],Int,Int) pour ne prendre que le texte que je veux.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <toto attr="a">texte1</toto>
    <toto attr="b">texte2</toto>
    normlement avec une implementation du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void characters(char[] ch, int start, int end) throws SAXException {
      String a=new String(ch, start, end);
      System.out.println("contenu texteuel : " + a);
    }
    la methode parcourt et traite tous les #CDATA du fichier.mais
    moi je ne veux prendre que le texte qui est dans le noeud <toto attr="b"> par exemple.

    merci d'avance




    [Modéré par Didier]
    Ajout de tag dans le titre
    Ajout de balises code
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Points : 194
    Points
    194
    Par défaut
    Salut,
    Je suis debutant avec Sax mais de ce que j'ai compris, l'information que tu souhaites avoir (a savoir la valeur des attributs) ne se recupere pas par la methode characters(char[] ch, int start, int end) mais par startElement. Tu peux faire quelque chose du syle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	public void startElement(
    		String uri,
    		String localName,
    		String qName,
    		Attributes attributes)
    		throws SAXException {
    		if ("toto".equals(qName))
    			for (int i = 0; i < attributes.getLength(); i++) {
    				if ("attr".equals(qName))
    					System.out.println("Valeur de l'attribut attr : "+ attributes.getValue(i));
    			}
    	}
    sylvain_2020

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    cette methode a mon avis rend le texte de l'attribut,
    mais moi je veux le texte entre les balises ouvrante et fermante. cad

    texte2
    dans ce cas

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Points : 194
    Points
    194
    Par défaut
    Excuse-moi, je n'avais pas compris ton premier post.
    J'ai une solution a te proposer mais il y a peut etre plus propre :

    - Tu utilises deux attributs pour conserver le nom de l'element courant et ses attributs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     private String currentQName;
        private Attributes currentAttributes;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public void startElement(String namespaceURI,
                                 String lName, // local name
                                 String qName, // qualified name
                                 Attributes attrs)
        throws SAXException
        {
            /* ton traitement */
            currentQName = qName;
            currentAttributes = attrs;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public void characters(char buf[], int offset, int len)
        throws SAXException
        {
            if("toto".equals(currentQName) && currentAttributes != null){
            	for(int i = 0; i < currentAttributes.getLength();i++){
            		if("attr".equals(currentAttributes.getQName(i)) && "b".equals(currentAttributes.getValue(i))){
    					String s = new String(buf, offset, len);
    					System.out.println(s);
            			i = currentAttributes.getLength();
            		}
            	}
            }
        }
    Ca ne me parait pas genial comme methode ... mais ca peut etre une solution.
    sylvain_2020

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    merci,
    ca marche! je suis sauvé

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

Discussions similaires

  1. [SAX] Problème de parsing avec SAX
    Par blueLight dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 28/08/2009, 23h17
  2. [JDOM] Parse XML avec SAX et chemin relatif
    Par logan449 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 03/12/2008, 14h53
  3. [SAX] probleme du parsing avec SAX
    Par fibi007 dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 09/06/2008, 12h59
  4. [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
  5. [SAX] Erreur de parsing XML avec SAX
    Par philobedo dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 02/08/2006, 13h49

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