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

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] et sections CDATA


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut [SimpleXML] et sections CDATA
    Bonjour à tous,

    Je rencontre un problème lors de l'enregistrement d'un fichier xml dans lequel j'utilise les CDATA. Les caractères < et > des CDATA sont automatiquement transformés en &lt; et &gt;.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $txt = 'Lorem ipsum dolor sit amet';
     
    $xml = simplexml_load_string(file_get_contents($file), null, LIBXML_NOCDATA);
     
    $node = $xml->addChild('node');
     
    $node->addChild('item', '<![CDATA['.$txt.']]>');
     
    $xml->asXML($file);
    Et dans le fichier cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xml>
    <node><item>&lt;![CDATA[Lorem ipsum dolor sit amet]]&gt;</item></node>
    </xml>
    Sauriez vous d'où viens ce problème ? C'est bien ennuyeux vu que du coup les CDATA ne font plus leur boulot...

    Par avance merci beaucoup pour votre aide... je suis coincé !!

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    la méthode "addChild" convertit automatiquement les caractères spéciaux donc tu n'as pas besoin d'utiliser de section CDATA

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Merci pour ta réponse !

    Le soucis c'est que ça doit convertir aléatoirement vu que quand je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $txt = 'Lorem ipsum & dolor sit amet';
    J'ai une belle erreur...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Bon... Après moultes essais infructueux la solution la plus simple est de convertir les caractères < > & " dans un style bbcode.

    Avec simplexml, pas moyen de faire ça proprement... J'ai eu beau essayer avec htmlspecialchars() et différents paramètres je finissais toujours par retrouver des &amp;quot; etc... addChild() fait vraiment de la merde de ce côté.

    Et pour les sections CDATA c'est cuit ! Simplexml les reconnait bien pour la lecture mais lors de la modification d'un fichier existant (donc qui comporte déjà des CDATA) les nouvelles sont bien ajoutées (logique) mais les anciennes passent à la trappe !

    Résultat, un WE cramé

Discussions similaires

  1. Produire une section CDATA comme résultat d'une transfo XSLT
    Par paquerette dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/04/2009, 14h22
  2. Validation section CDATA
    Par Loki13 dans le forum Valider
    Réponses: 2
    Dernier message: 01/04/2008, 15h39
  3. Réponses: 21
    Dernier message: 07/09/2007, 10h38
  4. [SimpleXML] Les sections CDATA
    Par Rakken dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/07/2007, 16h08
  5. [DOM] Création automatique de sections CDATA
    Par chmouette dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 29/03/2007, 17h20

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