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

Développement Web en Java Discussion :

Echappement de caractères XML


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut Echappement de caractères XML
    J'ai un document html que je souhaite convertir en doc Dom4J.

    J'ai eu l'erreur suivante
    org.dom4j.DocumentException: Error on line 1 of document : Reference is not allowed in prolog. Nested exception: Reference is not allowed in prolog.
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)
    at MonTest.main(MonTest.java:21)
    Nested exception:
    org.xml.sax.SAXParseException: Reference is not allowed in prolog.
    C'était un "&" qu'il fallait échapper en & amp; pour construire le document.

    En XML, il semblerait qu'il y ait 5 caractères à échaper: (gt, lt, quot, amp, apos)

    Néanmoins, Comment les échapper sans le faire dans les noeuds des éléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <div id="test" class='toto'>A&A<A"A</div>
    doit donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <div id="test" class='toto'>A&amp;A&lt;A&quot;A</div>
    et non:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        &lt;div id=&quot;test&quot; class=&apos;toto&apos;&gt;A&amp;A&lt;A&quot;A&lt;/div&gt;
    Merci,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    dom4j ou les outils DOM en général ne sont pas les meilleurs pour lire l'HTML. Les fichiers html ont bien souvent des erreurs qui les rendent incompatible avec le XML.

    Je sais pas à quoi tu pense avec ta dernière proposition qui n'a pas beaucoup de sens, mais en xml, tu dois échapper dans le texte les caractère < > et &, car sinon on ne sais pas faire la différence avec le balisage. Ensuite, parfois t'as besoin d'échapper ' et ", quand c'est conflictuel au niveau des attributs.

  3. #3
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    J'suis bien conscient qu'il faut échapper le xml avant la construction de celui-ci, ca se fait facilement avec StringEscapeUtils.escapeXML, mais le truc c'est que j'ai pas la main dessus, et qu'on me donne un soit disant XML mais mal formaté et donc qui plante à la construction du dom4j.

    Du coup je dois le faire à la main, sauf si j'essaie de me battre pour qu'on me donne l'XML cohérent, mais si ca s'avérait simple j'l'aurais fait de mon côté

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Sauf qu'on a toujours pas vu ce que tu reçois :/


    Pour lire du HTML et le corriger, il y a des outils comme tidyHTML, nekoHTML (pour faire un DOM) etc.

    Mais il restera des limites à ce qu'on peux faire.

    Si tu reçois

    <div> La valeur de b est telle que a<b>c</div>

    il n'y a aucun moyen pour un outil de savoir si il doit interpréter

    <div> La valeur de b est telle que a&lt;b&gt;c</div>

    ou

    <div> La valeur de b est telle que a<b>c</b></div>

  5. #5
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    Effectivement, je suis dans le cas ou ca va pas être vraiment interprétable. ( Merci pour les outils DOM, ça peut être utile.

    Du coup, j'demande à faire corriger le XML qu'on nous fournie.

    Merci.

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

Discussions similaires

  1. [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Par mbinte dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/10/2008, 14h33
  2. QueryString Echappement du caractère &
    Par lapanne dans le forum ASP
    Réponses: 2
    Dernier message: 12/03/2007, 10h49
  3. [Conception] Echappement de caractères
    Par nicoaix dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/04/2006, 19h32
  4. [DOM] Caractère XML non valide
    Par alliance dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/02/2006, 11h05
  5. Réponses: 3
    Dernier message: 01/02/2006, 18h26

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