begin process at 2012 05 30 20:20:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

modifier cdata dans un xml


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

modifier cdata dans un xml

jeudi 7 octobre 2010 à 15:06:17 | modifier cdata dans un xml

marine34000

Salut :-)

J'ai un problème pour modifier les cdata

Code XML :
<?xml version="1.0" encoding="utf-8"?>
<contact>
<content>le test</content>
<lecontent><![CDATA[pour le test]]></lecontent>
</contact>


j'ai trouvé ce code:

Code PHP :
<?php
$manouvellevaleur = 'un autre tessssst';
$xml = simplexml_load_file('contact.xml');
$xml->addChild('lecontent', '<![CDATA['.$manouvellevaleur.']]>');
echo $xml->asXML();
?>


Mais ca me donne

Code XML :
<?xml version="1.0" encoding="utf-8"?>
<contact>
<content>le test</content>
<lecontent><![CDATA[pour le test]]></lecontent>
<lecontent>&lt;![CDATA[un autre tessssst]]&gt;</lecontent>
</contact>


quelqu'un a la solution ?

Marine
jeudi 7 octobre 2010 à 17:11:23 | Re : modifier cdata dans un xml

neigedhiver

Salut,

En fait, avec SimpleXMLElement, c'est tellement simple de manipuler du XML qu'on a tendance à se compliquer la vie...
Il m'a fallu un peu de temps pour trouver la réponse au problème, mais en fait, c'est hyper simple...
Comme tu le montres dans ton exemple, lorsque l'on insère du texte dans un élément, il est automatiquement protégé. C'est à dire que les caractères interdits que sont <, > et & sont automatiquement encodés. Ainsi, < devient &lt; > devient &gt; et enfin, & devient &amp;
Il existe deux type de données textes : CDATA et PCDATA. La seule différence réside dans le fait qu'une donnée PCDATA n'est pas interprétée par l'analyseur XML, contrairement à une donnée CDATA.
La raison d'être des données CDATA est de permettre d'écrire du texte qui ne sera pas analysé et contenant des caractères spéciaux (<, > ou &). C'est tout.
Par défaut, toutes les données sont des PCDATA. Quand SimpleXML encode les données textes, elles ne seront plus analysées, puisque les caractères spéciaux, qui indiquent un début d'analyse (< servant à ouvrir un nouvel élément, & à définir un caractère spécial) ne sont plus interprétables, puisqu'encodés.

En somme, il n'est pas nécessaire, quand on utilise un tel outil, de chercher à y mettre les tags <![CDATA[ et ]]> puisque le contenu ne sera jamais analysé.

Je sais pas si j'ai été clair...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
jeudi 7 octobre 2010 à 17:26:58 | Re : modifier cdata dans un xml

marine34000

Sympa la réponse merci :-)

Tu veux dire qu'on a pas besoin d'utiliser <![CDATA[ et ]]> ??

Le problème c'est que mes xml marche avec flash et utilise tous des cdata

:-(

(j'ai bien compris ?? lol)
jeudi 7 octobre 2010 à 17:38:19 | Re : modifier cdata dans un xml

neigedhiver

Alors il faut écrire le fichier manuellement.
C'est à dire qu'il faut récupérer la chaîne XML ($xml -> asXml()) et remplacer les chaînes "cdata" encodées par leur équivalent décodé. Ca pourrait ressembler à quelque chose dans ce genre :

Code PHP :
$enc = array('&lt:![CDATA[', ']]&gt;');
$dec = array('<![CDATA[', ']]>');

$finalXml = str_replace($enc, $dec, $xml -> asXml());

file_put_contents($destination_xml_file, $finalXml);


Avec ça, il faut penser à écrire manuellement les <![CDATA[ et ]]> dans les chaînes que l'on stocke dans le XML, à chaque fois ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)


Cette discussion est classée dans : code, test, modifier, xml, cdata


Répondre à ce message

Sujets en rapport avec ce message

du php dans le xml [ par alain732 ] Bonjour,J'ai un souci entre le php et le xml.Voici le code que j'aimerai modifier pour pouvoir aller chercher les informations dans une base MYSQL.Le expression régulière cdata [ par pcmanprogrammeur ] bonjour à tous j'ai besoin d'encadrer les informations d'un document XML par des CDATA. Pour l'instant, j'en suis là : [code=php] $xml = "idperso"; Problème avec les regex [ par xaviernuma ] Bonjour,Je dois récupérer 4 valeurs dans une chaîne de caractère, j'ai récupéré les trois première mais pas moyen de trouver le motif pour la capturer modifier la taille de ma photo [ par esteller ] j'ai un code permettant d'afficher les éléments de ma base de donnée dans une table.Mais le probleme est qu'il affiche la photo tres grande.comment fa Problème avec la fonction fctaffichimage [ par gnut ] Voilà la fonction que j'ai récupéré : [code=php]<?php // --------------------------------------------------------------------------------------------- xml/xsl [ par math11 ] Bonjour, Débutant en xml, je suis a la recherche d'un moyen de lire un fichier xml, qui utilise une feuille de style. Sous Firefox, lorsque j'appel Erreur xml [ par dalichar ] Bonjour, j'ai un fichier xml dans lequel j'arrive à ajouter des noeuds sans problèmes, mais quand je veux les supprimer c'est une autre histoire. mo Parser une balise XML ( question pour les PRO) [ par jihednond ] bonjour je suis entrain de paecer un flux XML tout c'est bien passer pour les balise sans attribut mais je me suis bloqué au niveau de ce type de bal SimpleXML [ par fabienfs ] Bonsoir, Je débute avec SimpleXML et j'ai du mal à lire la syntaxe de mon XML. Voici mon XML : [code=xml] PLAYLIST <item ui comment peut on modifier code source d'une page web! [ par bluever ] salut tout le monde.. Bon voilà, j'ai un petit soucis avec un petit malin sur un forum, qui arrive à publier des posts avec mon pseudo !  Tout d'a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,140 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales