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 de parsing XML


Sujet :

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

  1. #1
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut Problème de parsing XML
    Bonjour à tous !

    Je veux parser un fichier XML d'un flux RSS, celui-ci est encodé en iso-8859-1. Lorsque je parse le fichier avec SAX, j'ai l'exception suivante qui retentie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WARN/System.err(2722): org.apache.harmony.xml.ExpatParser$ParseException: At line 23, column 21: not well-formed (invalid token)
    Cela correspond au caractère accentué: "é":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <title>2010 - 330 Réparation de conduite
    Je voudais tout d'abord que quelqu'un m'explique pourquoi j'ai cette exception et comment faire pour pouvoir lire ce fichier sans soucis.

    En effet, je dois pouvoir parser n'importe quel flux rss avec tous les encodages... Notamment utf8 et ISO...

    Merci beaucoup par avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par titou624 Voir le message
    Je voudais tout d'abord que quelqu'un m'explique pourquoi j'ai cette exception et comment faire pour pouvoir lire ce fichier sans soucis.
    Pourquoi, il faudrait qu'on ait l'URL. (D'ailleurs c'est toujours à donner, ça.)

    A priori, le flux XML n'annonce pas qu'il est en autre chose que utf-8, et tu n'en informes pas ton parseur non plus. Donc, il parse en utf-8, et ça ne marche pas.

    Solution #1: Ça sert à quoi de faire autre chose que de l'utf-8 ? Passe le fichier en utf-8.

    Solution #2: dans la déclaration XML, ajouter encoding="iso-8859-1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?>
    Solution #3: indiquer à ton parseur qu'il faut parser en iso-8859-1, sans faire d'autodétection. L'une des façons de faire ça est de lui passer un flux de chars au lieu d'un flux de bytes. Mais bon, ça dépend des parseurs et des manières de les appeler.

    En effet, je dois pouvoir parser n'importe quel flux rss avec tous les encodages... Notamment utf8 et ISO...
    Règle XML :
    - Si aucune déclaration XML n'est présente, le document est en UTF-8
    - S'il y a une déclaration XML mais que l'encodage n'y est pas précisé, c'est un encodage Unicode, auto-détecté à l'aide de la déclaration XML. En général, UTF-8.
    => Donc, si c'est pas précisé que c'est autre chose qu'utf-8, alors c'est utf-8. C'est comme ça.

    Il est autorisé, toutefois, que le fournisseur et le récepteur du document XML s'arrangent pour utiliser un autre encodage, et s'échangent l'information par d'autres moyens. Exemple avec les flux RSS par HTTP : le header Content-Type, avec paramètre ;charset=iso-8859-1
    Si tu retiens cette solution (par masochisme ou parce que ça ne dépend pas de toi,) il faut lire ce header, en déduire l'encodage du document, et l'indiquer au parseur (note : certains parseurs acceptent qu'on leur passe directement une URL, et auto-détectent la présence de ce header et son sens.)
    Si rien ne permet de faire la différence... Ben rien ne permet de faire la différence, tiens ! Tu n'as plus qu'à essayer tous tes flux, noter leur encodage, et associer à chaque flux que tu lis dans ton programme, l'encodage que tu as vu qu'il utilise.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de parsing XML
    Par jojo_ol76 dans le forum Android
    Réponses: 4
    Dernier message: 28/10/2011, 22h10
  2. Problème chargement/parsing xml de 36000 lignes
    Par babass77 dans le forum Flex
    Réponses: 6
    Dernier message: 18/03/2009, 23h45
  3. [JDOM] java & XML, problème de parsing avec JDOM
    Par OreillePointue dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 11/01/2008, 10h17
  4. Problème de parsing XML
    Par youcoups dans le forum C#
    Réponses: 4
    Dernier message: 07/12/2007, 16h57
  5. [AJAX] parsing XML
    Par Gédéon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/12/2006, 12h26

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