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

JavaScript Discussion :

[AJAX] Entit�s HTML extraites d'un XML avec JS pas interpr�t�es


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    13
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 13
    Par d�faut [AJAX] Entit�s HTML extraites d'un XML avec JS pas interpr�t�es
    Salut, je suis en train de faire une petite application en AJAX. Une liste avec des filtres sous forme de case � cocher.

    Tout fonctionne tr�s bien hormis qu'il existe encore un petit probl�me au niveau des caract�res sp�ciaux. Je travaille qu'avec des caract�res sous la forme d'entit�s HTML et encodage UTF-8 (base de donn�es MySQL et fichier XML compris).

    Le probl�me c'est lorsque je parcours mon XML avec JavaScript et que je r�cup�re les donn�es pour les afficher dans un tableau que je cr�e � la vol�e, les entit�s HTML apparaissent telle quelles au lieu d'afficher les caract�res coresspondants.

    Voil� � quoi ressemble mon XML :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <users>
         <user id="1">
              <name><![CDATA["GUILLARD"]]></name>
              <firstname><![CDATA["Aur&eacute;lien"]]></firstname>
              <phone>xxxxxxxxxx</phone>
              <mobile>xxxxxxxxxx</mobile>
              <mail>[email protected]</mail>
         </user>
    </users>
    Je r�cup�re les donn�es de cette mani�re en JS
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    var text = removeQuotes(getText(items.item(i).childNodes[1]) + " " + getText(items.item(i).childNodes[0]));
    removeQuotes() est une fonction perso pour enlever les apastrophes g�n�r�es par les CDATA et getText() est une fonction perso pour utiliser .text ou .textContent suivant les navigateurs webs.

    Et donc, � l'affichage , j'ai :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Aur&eacute;lien GUILLARD	[email protected]	xxxxxxxxxx	xxxxxxxxxx
    Au lieu d'avoir :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Aurélien GUILLARD	[email protected]	xxxxxxxxxx	xxxxxxxxxx
    Quelqu'un a une id�e de pourquoi les entit�s HTML ne sont pas interpr�t�es ?

    Merci beaucoup

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Ca doit venir de ta fonction getText : si tu transformes du contenu en texte, les entit�s HTML deviennent... du texte, donc affich�es comme du texte
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    13
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 13
    Par d�faut
    Ba comment je peux r�cup�rer mes donn�es en JS si je n'utilise pas .text ou .textContent sachant que .nodeValue me renvoie null � chaque pour une raison inconnue...

    Autrement, on m'a dit qu'il ne fallait pas utiliser de CDATA. Que c'�tait inutile dans mon cas.

    Cependant, si je les enl�ve, mon XML n'est pas valide, Firefox me donne l'erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Erreur d'analyse XML : entité non définie
    Internet Explorer me donne l'erreur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Erreur de traitement de la ressource
    et Opera me renvoie l'erreur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    well-formedness constraint: entity declared
    Bref, mon XML semble incorrect si il contient des entit�s HTML.

    Le probl�me, ce que je suis oblig� de faire avec ces entit�s HTML, je vais chercher mes donn�es dans une base de donn�es MySQL o� les donn�es sont enregistr�es de cette mani�re.

    La question revient donc � d�terminer comment on peut enregistrer des entit�s HTML dans un XML...

  4. #4
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    D�sol�, je ne suis pas s�r de bien comprendre ton probl�me...
    Tu cr�es une fonction Ajax pour r�cup�rer des donn�es � partir d'une base MySQL.
    J'imagine que cette fonction appelle un script PHP qui interroge ta base, r�cup�re les �l�ments et construit un fichier XML (sinon, d'o� sort le fichier XML dont tu nous parle).

    Donc, il semble logique que ton PHP renvoie le fichier XML, que tu peux interpr�ter soit en texte (responseText) soit en XML (responseXML).
    Du coup, ta fonction Ajax r�cup�re du XML, l'interpr�te, puis ins�re les donn�es r�cup�r�es (dans lesquelles les entit�s RESTERONT des entit�s).

    Je ne comprend pas pourquoi tu veux r�cup�rer du texte...

    Pour ce qui est des erreurs du XML, �a semble logique qu'un navigateur qui re�oit du XML sans DTD n'arrive pas � le lire, en l'occurence, il faut le traiter en javascript avant de l'ins�rer dans le html
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    13
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 13
    Par d�faut
    J'ai r�ussi � r�soudre mon probl�me

    En fait, faut r��crire une DTD perso en sp�cifiant des entit�s pour que les entit�s HTML soient interpr�t�es.

    Mon XML ressemble donc � �a avec le DTD inclu dedans :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!DOCTYPE users [
    <!ENTITY Agrave "À">
    <!ENTITY Aacute "Á">
    <!ENTITY Acirc "Â">
    <!ENTITY AElig "Æ">
    <!ENTITY Ccedil "Ç">
    <!ENTITY Egrave "È">
    <!ENTITY Eacute "É">
    <!ENTITY Ecirc "Ê">
    <!ENTITY Igrave "Ì">
    <!ENTITY Iacute "Í">
    <!ENTITY Icirc "Î">
    <!ENTITY Ograve "Ò">
    <!ENTITY Oacute "Ó">
    <!ENTITY Ocirc "Ô">
    <!ENTITY Ugrave "Ù">
    <!ENTITY Uacute "Ú">
    <!ENTITY Ucirc "Û">
    <!ENTITY agrave "à">
    <!ENTITY aacute "á">
    <!ENTITY acirc "â">
    <!ENTITY aelig "æ">
    <!ENTITY ccedil "ç">
    <!ENTITY egrave "è">
    <!ENTITY eacute "é">
    <!ENTITY ecirc "ê">
    <!ENTITY igrave "ì">
    <!ENTITY iacute "í">
    <!ENTITY icirc "î">
    <!ENTITY ograve "ò">
    <!ENTITY oacute "ó">
    <!ENTITY ocirc "ô">
    <!ENTITY ugrave "ù">
    <!ENTITY uacute "ú">
    <!ENTITY ucirc "û">
    <!ELEMENT users (user*)>
    <!ELEMENT user (name?, firstname?, phone?, mobile?, mail?)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT firstname (#PCDATA)>
    <!ELEMENT phone (#PCDATA)>
    <!ELEMENT mobile (#PCDATA)> 
    <!ELEMENT mail (#PCDATA)> 
    <!ATTLIST user id CDATA #REQUIRED>
    ]>
    <users>
    <user id="1">
    <name>GUILLARD</name>
    <firstname>Aur&eacute;lien</firstname>
    <phone>xxxxxxxxxx</phone>
    <mobile>xxxxxxxxxx</mobile>
    <mail>[email protected]</mail>
    </user>
    </users>
    Source d'info :
    le w3c : http://www.w3.org/TR/REC-xml/#wf-entdeclared

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XSLT 1.0] Tableau html pris sur un XML avec le bon dimensionnement
    Par GreatDeveloperOnizuka dans le forum XSL/XSLT/XPATH
    R�ponses: 4
    Dernier message: 13/06/2011, 10h45
  2. Cr�ation d'un HTML � partir d'un XML avec XSLT
    Par Ioan dans le forum Codes sources � t�l�charger
    R�ponses: 0
    Dernier message: 08/03/2011, 18h51
  3. [HTML] streaming video *.rm marche avec FF pas avec IE
    Par gretch dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 5
    Dernier message: 24/10/2006, 15h05
  4. R�ponses: 2
    Dernier message: 03/06/2005, 11h00
  5. Afficher du XML avec du HTML
    Par BipBip2 dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 9
    Dernier message: 05/04/2005, 10h45

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