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 :

Erreur parser fichier xml avec caractère spéciaux


Sujet :

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

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Par défaut Erreur parser fichier xml avec caractère spéciaux
    Bonjours,

    J'ai un programme JAVA et je parse un ficheir xml. J'ai une erreur car dans une valeur string j'ai une caractère spécial "&".

    Mon erreur:
    "org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference. / The entity name must immediately follow the '&' in the entity reference."
    Le fichier est gténéré sour MVS et transféré sous WIN NT.

    Mon parser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public List charger() throws SAXException, IOException, Exception {
       //loader le fichier description.xml
       XMLParser parser = new DOMParser();
       parser.parse(nomFichier);	
       Document document =((DOMParser)parser).getDocument();
       return loadDocument(document);
    }
    Il remonte l'erreur dans "parser.parse(nomFichier);"

    J'ai changer a la main dans le fichier xml "&" par le code de "&" et tout passe bien. Le problème est que le fichier est généré par un progiciel dons pas moyen de changer ce caractère a la génération.

    Il existe une facon de parser sans généré cette erreur?


    Merci

    Michel

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    Citation Envoyé par turcotm
    J'ai changer a la main dans le fichier xml "&" par "&" et tout passe bien. Le problème est que le fichier est généré par un progiciel dons pas moyen de changer ce caractère a la génération.

    Il existe une facon de parser sans généré cette erreur?
    non, parce qu'il s'agit justement d'une règle imposée par le parsing de XML, car elle évite qu'il y ait d'ambiguïté entre l'esperluette en tant que caractère propre et l'esperluette en tant que préfixe d'entité. La seule solution, si tu n'as pas la main sur la génération du XML, est de faire un pré-traitement de remplacement, en utilisant de préférence des expressions régulières.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 37
    Par défaut
    Merci GrandFather...

    C'est bien ce que je penssait. Je vais essayé de faire le replace en amont du pgm JAVA. Lors du transfert entre plate forme par exemple. Si non, en JAVA je ne sait pas trop...

    @+

    Michel

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 161
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String xml = "<balise>&</balise>";
    xml.replaceAll("&[^(amp)(lt)(gt)]","&amp;");
    attention, il en manque dans les (amp)(lt)... mais je te laisse le soin d'adapter au besoin.
    Je n'ai pas testé, mais ca devrait ressembler à ca en tous cas...

  5. #5
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Sinon tu peux essayer ca : &#38; mais ca revient au même je pense...

Discussions similaires

  1. [Batch] Fichier log avec caractères spéciaux
    Par Tchupacabra dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 23/10/2013, 18h55
  2. Réponses: 9
    Dernier message: 09/08/2012, 14h52
  3. [JDOM] parser fichier xml avec JDOM
    Par sal.gass dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/06/2008, 11h41
  4. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32
  5. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47

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