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 :

org.xml.sax.SAXParseException probleme avec &nbsp [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
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut org.xml.sax.SAXParseException probleme avec &nbsp
    Bonjour,

    J'ai probleme qui me bloque totalement. Enfaite j'ai développer une class qui lit des fichier XML reçu du serveur et a partir de ses fichier XML je créer un autre fichier XML baser sur les anciens. Le probleme c'est que parfois les fichier XML du serveur contiennent &nbsp ou un caractère special ce qui me donne ca:

    org.xml.sax.SAXParseException: The entity "nbsp" was referenced, but not declared.

    Je sais que la cause c'est l'espace enfaite. J'utilise cette partie du code pour charger le fichier XML que je vais lire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FileInputStream fileInputStream = new FileInputStream(new File(this.folder, scan[i]) );
    		    	InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
    		    	InputSource inputSource = new InputSource(inputStreamReader);
    j'ai voulu savoir si c'est possible a cette etape de supprimer tous les &nbsp qui se trouve dans le InputStream. Car je sais qu'il y a une autre method DTD mais franchement je viens de commencer dans le java donc je ne sais pas trop comment. Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Salut
    Il faut lire le contenu du fichier dans un String, faire un replaceAll(" ", " ") puis passer le SrtingReader(string remplacé) a ton InputSource

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    J'ai pas compris car c est pas possible de loader le contenu d'un xml a un String. Sauf si j'ete pas au courant lol. Si c'est possible de m'eclairer plus svp et merci beaucoup pour votre aide

    Edit: J'ai essayer une method pour changer le fichier en string mais le probleme c'est que le fichier xml ne va pas s'ouvrir tant que le probleme existe je ne reussie pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    File file = new File(fileName);
    char[] buf = new char[(int) file.length()];
    FileReader fr = new FileReader(file);
    int count = fr.read(buf);
    //Attention assure toi que count = buf.length
    String xml =  new String(buf, 0, count);
    xml.replaceAll(" ", " ");
    InputSource inputSource = new InputSource(new StringReader(xml));
    //...
    A++

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Citation Envoyé par hibour Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    File file = new File(fileName);
    char[] buf = new char[(int) file.length()];
    FileReader fr = new FileReader(file);
    int count = fr.read(buf);
    //Attention assure toi que count = buf.length
    String xml =  new String(buf, 0, count);
    xml.replaceAll(" ", " ");
    InputSource inputSource = new InputSource(new StringReader(xml));
    //...
    Juste pour peaufiner, "nbsp" c'est censé vouloir dire "non-breakable space", pas "space". Normalement ça devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xml.replaceAll(" ", "\u00a0");
    Bon, sinon, une solution plus adaptée serait de mettre le parseur sans validation (puisque manifestement le document n'est pas valide) et éventuellement définir un comportement adapté quand on voit une entité   non résolue au parsing.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Tu mélange entre document bien formé et document non valide. On utilise une DTD ou XML schema pour valider un document XML et savoir s'il respecte une certaine grammaire.
    Le caractère '&' à une interprétation spécial en Xml, et le parseur va vouloir le remplacer par une entité qui doit être définit dans le DOCTYPE dans le fichier DTD ou un peu avant dans un element <!ENTITY >
    Dans ton cas le parseur lancera toujour une exception à moins que tu inclus une DTD qui définit l'entité nbsp

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

Discussions similaires

  1. Erreur dans JSP : org.xml.sax.SAXParseException
    Par MetalGearBe dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/02/2012, 20h58
  2. [SAX] Erreur "org.xml.sax.SAXParseException Content is not allowed in prolog."
    Par Wizard50 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/06/2011, 15h10
  3. XMLDecoder : org.xml.sax.SAXParseException
    Par benkil dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 16/03/2011, 08h56
  4. [org.xml.sax.ErrorHandler] Empecher les messages automatiques
    Par Emplyst dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 25/07/2006, 21h03
  5. [netbeans 5.0] Probleme : org.xml.sax.SAXParseException
    Par romarseille dans le forum NetBeans
    Réponses: 4
    Dernier message: 12/06/2006, 11h35

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