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

XML/XSL et SOAP Discussion :

[XML-PHP] Problème encodage


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 9
    Points
    9
    Par défaut [XML-PHP] Problème encodage
    Bonjour,
    je post après m'être arracher les cheveux pendant plusieurs heures sur le problème sans trouver de solution. J'espère que vous pourrez m'aider.
    Voici le topo:
    j'ai un fichier xml sans entête d'ncodage préciser.
    ce fichier contient une balise <rantanplan> dirons nous avec des caracteres speciaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <rantanplan>
     remove lucky - > | " '... 
    </rantanplan>
    Bref, mon travail consiste à parser ce fichier xml en php, de le stoquer dans une mase Mysql, puis de reconstituer ce fichier xml.
    Voici ce que je fais pour enregistrer ma balise en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $rantanplan=addslashes(html_entity_decode(trim($doc->rantanplan->asXML())));
    puis requete mysql ....
    Lorsque j'interroge ma base de donnée, cela s'affiche correctement, idem lorsque je l'affiche dans une page html.
    Le problème apparait vous vous en doutiez lorsque j'exporte cette donnée dans un fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $rantanplan=$doc->createElement('rantanplan');
    $text = $doc->createTextNode($row['rantanplan']);
    $rantanplan->appendChild($text);
    Lorsuqe j'ouvre mon fichier xml résultant, les caractères spéciaux s'affichent de la forme
    "&lt;abs&gt;"
    Bref, j'ai essayer toutes les combinaisons entre:
    - spécifier une entête à mon fichier xml de sortie (utf8 et iso).
    - appel à la fonction html_entity_decode avant d'ajouter le text au noeud
    - appel à utf8_decode, et encode ...
    Ca ne marche pas, et ca m'énerve.
    Si qu'elqu'un a une solution, il me sauverai la vie (et à celle du PC avant que je tape sur l'ecran).

    Merci pour votre aide.
    A +

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bon, en remuant encore tout ca, je pense que j'ai détecter le problème (mais du coup j'en ai un nouveau).
    Le problème selon moi proviendrait du aprsing du fichier xml.
    en effet, mon noeud est de la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <rantanplan>
      test bidule >>> | "ok "
      <ok> fdfd dfg</ok>
    </rantanplan>
    ce qui m'interesse c'est d'enregistrer tout le contenu du noeud <rantanplan> en tant que texte. Pour cela, je l'enregistre en créant un simpleXMLElement en php et appelant la méthode ->asXML().
    Et c'est là que vient le problème : apparemment le parseur DOM php remplace le caractere ">" ou "<" par son entité HTML "&gt;" car pour lui, un document doit etre bien forme.
    Si je n'enregistre que le contenu text du noeud (c'est à dire qu'il ne prend pas en compte les balises <ok></ok> par exemple), le text ressors correctement.

    Donc pour résumer, mon nouveau problème est de récupérer sous format text le contenu d'une balise XML à l'aide d'un DOM php, sans que celui-ci interprete son contenu (cf: problème des balises).
    En gros, je veux récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     test bidule >>> | "ok "
      <ok> fdfd dfg</ok>
    Merci, a +

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bon, solution temporaire : j'enregistre bien le noeud <rantanplan> avec la methode asXML(), et je fais juste un str_replace pour les entités correspondantes à ">" et "<". Si quelqu'un a une meilleure solution, je suis preneur !!

    A +

Discussions similaires

  1. [DOM] Problème de transformation XML sur un serveur web
    Par hilyd dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/01/2014, 10h55
  2. [XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture
    Par gator dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 04/02/2012, 18h17
  3. Flash / XML / PHP et encodage !
    Par ahseed dans le forum Flash
    Réponses: 4
    Dernier message: 16/05/2007, 10h11
  4. Réponses: 4
    Dernier message: 28/09/2006, 20h20
  5. [XML::PARSER] Problème d'encodage
    Par frangin2003 dans le forum Modules
    Réponses: 13
    Dernier message: 05/09/2005, 14h59

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