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 :

Ignorer des balises [SAX]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut Ignorer des balises
    Bonsoir à tous,

    J'ai suivi le tutoriel sur SAX. J'ai réussi à faire en quelque sorte mon parser... mais je trouve ma méthode un peu "bourrin".
    En effet, mon parser contient toutes les balises, même celle dont je n'ai pas besoin, est-ce obligatoire ?

    Si je prends l'annuaire XML de cette page : http://java.developpez.com/faq/xml/?page=sax

    Puis-je rajouter une balise comme ci-dessous sans avoir à la déclarer dans mon parser...je voudrais qu'il l'ignore, comme si elle n'était pas présente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
               <annuaire>
                        <personne id="0">
                        <nom>nom0</nom>
                        <prenom>prenom0</prenom>
                        <adresse>adresse0</adresse>
                        <tel>0026421056</tel>
                        </personne>
                        <personne id="1">
                        <nom>nom1</nom>
                        <prenom>prenom1</prenom>
                        <adresse>adresse1</adresse>
                        <tel></tel>
                        </personne>
                        </annuaire>
    Pour tout vous dire, je souhaiterai parser cette page : http://www.google.fr/ig/api?weather=Paris,France

    Pour commencer, récupérer les éléments suivants présents dans les balises <current_conditions> : condition, temp_c, humidity

    Merci beaucoup d'avance.

    Bonne nuit

  2. #2
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Par défaut
    Bonjour,

    Je ne suis pas sur de comprendre ta question.

    Mais si tu ne testes pas une balise dans le endElement par exemple,
    il n'y aura simplement pas l'opération sur cette balise.
    Ca ne remet en cause (ou ne devrait pas remettre en cause selon ton implementation)
    le parsing des autres balises (celles qui sont testées et sur lesquelles tu effectues une opération)

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut
    Merci de ta réponse.

    En gros, comment parser avec SAX l'exemple que j'ai donné sans avoir à mentionner la balise <tel>.
    L'exemple du tutorial me renvoie : la balise tel est inconnue.
    Ce qui est logique vu le code du programme, mais je n'arrive pas à le modifier correctement.

    Lavrenti.

  4. #4
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Par défaut
    Il faut modifier dans le startElement :

    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
     
        //détection d'ouverture de balise
        public void startElement(String uri, String localName,
                String qName, Attributes attributes) throws SAXException{
     
            if(qName.equals("annuaire")){
                annuaire = new LinkedList<Personne>();
                inAnnuaire = true;
            }else if(qName.equals("personne")){
                personne = new Personne();
                try{
                    int id = Integer.parseInt(attributes.getValue("id"));
                    personne.setId(id);
                }catch(Exception e){
                    //erreur, le contenu de id n'est pas un entier
                    throw new SAXException(e);
                }
                inPersonne = true;
            }else {
                buffer = new StringBuffer();
                if(qName.equals("nom")){
                    inNom = true;
                }else if(qName.equals("prenom")){
                    inPrenom = true;
                }else if(qName.equals("adresse")){
                    inAdresse = true;
                }else if(qName.equals("tel")){
                    inTel = true;
                }else{
                    //erreur, on peut lever une exception
                    throw new SAXException("Balise "+qName+" inconnue.");
                }
            }
        }
    en rajoutant un controle sur "tel", ce qui évite de passer dans le sinon de l'exception.

    Et suivre le même principe pour le endElement.

    Bon courage.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut
    Finalement, j'ai trouvé le moyen de les ignorer. Sans avoir à mettre un autre "else if".
    Maintenant, un autre problème se présente.
    J'ai le code suivant à parser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <temp_f data="55"/>
    <temp_c data="13"/>
    <humidity data="Humidité : 54%"/>
    <icon data="/images/weather/sunny.gif"/>
    <wind_condition data="Vent : N à 10 km/h"/>
    Jusqu'à la balise temp_c, tout va bien.
    Ensuite : PROBLèME.

    Le '%' contenu dans le data de la balise <humidity> va empêcher le parsing (Erreur I/O). Si je retire ce %, le problème vient ensuite avec '/' dans <icon> et <wind_condition>.
    Je n'ai aucune idée de comment résoudre ce problème de caractères spéciaux.

    Une idée ?

    Merci en tout cas, j'avance bien et je comprends (là est le plus important).

  6. #6
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Par défaut
    Bonsoir,

    Ca ! ca m'en bouche un coin.
    Je vois pas la tout de suite et mes recherches pour t'aider sont infuctueuses.

    Mais ca doit le faire, un attribut avec un pourcentage ou un chemin ca doit marcher. Y a pas de raison....

    Bon courage.
    Euh... Et bonne nuit...
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

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

Discussions similaires

  1. [Article] Liste des balises et de leurs enfants pour une validation XHTML 1.1
    Par giminik dans le forum Publications (X)HTML et CSS
    Réponses: 12
    Dernier message: 12/02/2018, 15h11
  2. [SAX][DELPHI] ignorer des balises
    Par sillycoder dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 03/10/2006, 11h55
  3. XLS - Nom des balise
    Par lakrimo dans le forum XMLRAD
    Réponses: 2
    Dernier message: 05/02/2004, 11h12
  4. Position des balises H2 ou comment les numéroter
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/07/2003, 19h24
  5. Placement des balises avec DTD
    Par Keul125 dans le forum Valider
    Réponses: 4
    Dernier message: 28/05/2003, 12h08

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