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, UTF-8 ?


Sujet :

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

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Problème de parsing, UTF-8 ?
    Bonjour,

    J'ai fait un programme java qui parse un document XML encoder en UTF-8 avec dom4j.
    Grâce à des requêtes XPATH je récupère certaines informations dans mon arbre XML pour construire des beans.

    Seulement dans certains fichiers XML, le parsing ne me récupère rien alors que la structure de mes fichiers XML sont les mêmes.

    Du coup, j'ai pensé que cela pouvait venir d' un problème d'encode, et donc j'ai forcé l'encodage de mon parseur avec UTF-8.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Document xmlDoc = DocumentHelper.createDocument();
    xmlDoc.setXMLEncoding("UTF-8");
    SAXReader reader = SAXReader();
    xmlDoc = rearder.read( new StringReader (this.flux));
    Exemple d'xml et de requete XPATH

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete XPATH /root/toto
     
    fichier A:
    <?xml version= "1.0" encoding= "UTF-8"?>
    <root>
    <toto>A</toto>
    </root>
    L'execution de la requete XPATH par mon programme ne récupère rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fichier B:
    <?xml version= "1.0" encoding= "UTF-8"?>
    <root>
    <toto>B</toto>
    </root>

    L'execution de la requete XPATH par mon programme récupère bien l'information.

    Mais malgré cela le problème existe toujours quelqu'un aurait-il une idée ?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Comment récupères-tu le fichier ? Est-il en local, ou le récupères-tu via FTP par exemple, au hasard en "ASCII" au lieu de "BINARY" ?

    Je pense que la structure de ton fichier n'étant pas en cause, le problème est bien dans l'encodage du fichier.

    Je ne peux pas ne savoir plus sans d'autres informations, peux-tu en dire plus sur comment est crée le fichier, et comment tu le récupères ?

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Réponse
    En fait, il s'agit d'un fichier xml qui se trouve en base
    On utilise db2 v8 sous AIX 5
    Le blob je la récupère via une requete SQL : select xml from ...
    Dans mon programme java je vais un getString de mon resultset

    Une fois le string récupérer je construit un arbre XML en forcant l'encodage comme écrit ci dessus

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Ok déjà ça permet d'y voir plus clair.

    Utilises plutôt un clob pour voir, qui est l'objet à utiliser pour stocker une chaine UTF8, blob c'est un stockage binaire, et j'imagine qu'il se peut que tu aies des pertes d'information si tu le fais avec un blob.

    Tu me diras ce que ça donne

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Réponse
    Bonsoir, je viens de suivre ton conseil mais le résultat est toujours pareil

    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Clob clob = rs.getClob("XML");
    String descrXML = clob.getSubString(1, (int) clob.length());
    Demain je vais essayer en récupérant le flux du clob.

    Merci de ton aide c'est gentil de répondre.

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Aucun problème,

    Il faut que tu regardes si tu fais bien un setString dans un sens et un getString dans l'autre, pour que ça fonctionne bien.

    Si tu as une base de données PostGreSQL, tu peux aussi créer un champs TEXT, ça fonctionne très bien.

    Quel outil de persistence utilises-tu ?

    A+

Discussions similaires

  1. [DOM] [DocumentBuilder] Problème de parsing de fichier
    Par tck-lt dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 13/04/2006, 17h18
  2. [Tableaux] problème de parse error
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 21h37
  3. problème d'encoding UTF-8 via la SDK MSXML
    Par ep31 dans le forum MFC
    Réponses: 6
    Dernier message: 26/01/2006, 09h46
  4. [JDOM] Problème de Parsing JDOM
    Par RapidJul dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/10/2005, 12h09
  5. [SAX] Problème de parsing ?
    Par Regis.C dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 22/06/2005, 21h48

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