begin process at 2012 05 31 04:33:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

Autre

 > 

Php xml ajouter un cdata à un noeud


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

Php xml ajouter un cdata à un noeud

mercredi 29 septembre 2010 à 12:35:31 | Php xml ajouter un cdata à un noeud

lestephnet


Bonjour je voudrais trouver une solution pour ajouter un n½ud CDATA à mon xml

mon xml////////////contact.xml

<?xml version="1.0" encoding="utf-8"?>
<contact>
<content>le test</content>
<lecontent>pour le test</lecontent>
</contact>
////////////

Mon php //////
<?php
$xmlfile = simplexml_load_file('contact.xml');

///Valeur à mettre entre <![CDATA[ ]]>
$manouvellevaleur = "letesttttttttttttttt";

foreach ($xmlfile->contact as $fiche) {
echo $fiche->content,'<br/>';
echo $fiche->lecontent,'<br/>';
//echo $fiche->node['mail'],'<br/>';
echo "--------------------------------------------<br/>";
$fiche->lecontent=$manouvellevaleur;
}
$xmlfile->asXML('contact2.xml');
?>
///////////

J'ai voulu utiliser un createCDATASection(data)
mais je n'ai pas réussi à l'ajouter à mon code.

Avez vous une solution ?
Merci d'avance
steph
mercredi 29 septembre 2010 à 14:29:22 | Re : Php xml ajouter un cdata à un noeud

neigedhiver

Salut,

SimpleXMLElement n'est pas vraiment conçu pour manipuler des fichiers XML. Il est très très performant en lecture, mais pas en modification. Il est préférable, pour cela, d'utiliser DOM bien plus puissant (mais un peu plus compelxe à utiliser).

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 29 septembre 2010 à 16:57:55 | Re : Php xml ajouter un cdata à un noeud

lestephnet

Merci de ta réponse,

En général j'utilise un dom, mais je n'arrive pas à lire les balises CDATA.
Je connais le site http://www.phpcs.com, je passe toujours sur ce site.

Justement si je pose la question sur le forum c'est que j'ai déjà de mon coté fait pas mal de test pour trouver moi même la solution et j'arrive a une impasse.

Je cherche une solution propre pour ajouter un CDATA avec DOM ou SimpleXMLElement.

Si quelqu'un à une solution... Merci d'avance :-)

steph
mercredi 29 septembre 2010 à 17:25:03 | Re : Php xml ajouter un cdata à un noeud

neigedhiver

Pas de soucis, j'ai pas prétendu que t'avais pas cherché ;) (j'aurais été sévère si ç'avait été flagrant). Je pensais que tu restais sur SimpleXMLElement...

Première chose : ton fichier XML est mal formé. Donc tu ne peux pas le parcourir correctement.

Regarde la différence de ton script de test avec un fichier contact.xml comme celui-ci :
Code XML :
<?xml version="1.0" encoding="utf-8"?>
<contacts>
	<contact>
		<content>le test</content>
		<lecontent>pour le test</lecontent>
	</contact>
</contacts> 


Ou alors, essaie pour ta boucle foreach :
Code PHP :
foreach ($xmlfile as $fiche) {

Je pense qu'avec ça, tu vois déjà où est le problème pour le parcours de ton fichier...
Je pense que la première correction que je te propose (un élément contacts qui contient chaque contact, élément à part entière) ton fichier xml est plus cohérent avec ce qu'il d'écrit. Par ailleurs, à ce moment là, ton script fonctionne correctement (c'est à dire que le contenu de <lecontent> est modifié correctement.

La principale difficulté est de savoir quel objet on a dans les mains, surtout quand on itère...
En reprenant le contact.xml que je te propose, essaie ça :

Code PHP :
<?php

$xmlfile = simplexml_load_file('contact.xml');

///Valeur à mettre entre <![CDATA[ ]]>
$manouvellevaleur = "letesttttttttttttttt";

foreach ($xmlfile as $fiche) {
	var_dump($fiche->content);
	var_dump($fiche->lecontent);
	//echo $fiche->node['mail'],'<br/>';
	echo "--------------------------------------------<br/>";
	$fiche->lecontent=$manouvellevaleur;
}
$contact = $xmlfile->addChild('contact');

$content = $contact -> addChild('content');
$contact -> content = 'Encore pour le test';

$lecontent = $contact -> addChild('lecontent');
$contact -> lecontent = 'Yooooooooooooooo';

$xmlfile->asXML('contact2.xml');
?> 


Moi, j'obtiens un fichier XML avec un deuxième élément <contact>, enfant de <contacts>. Bon, il manque la mise en forme, ce que SimpleXMLElement n'est pas supposé gérer. Sinon, le XML est bien formé.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 6 octobre 2010 à 17:22:13 | Re : Php xml ajouter un cdata à un noeud

lestephnet

Bonjour,

Merci pour la reponse


Comment modifier le
///Valeur à mettre entre <![CDATA[ ]]>
$manouvellevaleur = "letesttttttttttttttt";

$fiche->lecontent=$manouvellevaleur;

avec un cdata dans un XML avec un createCDATASection , un new DOMCDATASection ou un addCData ? Les docs que je trouve en ligne ne sont pas très claire.

steph
jeudi 7 octobre 2010 à 15:50:18 | Re : Php xml ajouter un cdata à un noeud

marine34000

Bonjour steph,
Je cherche exactement le même système
Si je trouve avant je te dis


Marine
:-)
jeudi 7 octobre 2010 à 17:12:40 | Re : Php xml ajouter un cdata à un noeud

neigedhiver

Salut,

J'avais pas bien compris la problématique, mais à lire le message de Marine, je pense que j'ai compris... Du coup, j'ai répondu à la suite de son message.
==> http://www.phpcs.com/forum/sujet-MODIFIER-CDATA-DANS-XML_1472043.aspx#1


--
Neige

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


Cette discussion est classée dans : php, ajouter, xml, echo, fiche


Répondre à ce message

Sujets en rapport avec ce message

comment ecrire dans un xml?? [ par redemption ] bonjour à tous. je suis Hyper debutant en php et xml. et pour una application, on m'a demandé a ce que les fichiers xml soient crées dynamiquement via XML dynamique avec php [ par kingsaiz ] voila je fais un xml à la volée avec une page php Resultat du xml avec mon code php <parameters bigframeheight ="410" bigframewidth ="500" noofcolum écrire bonne endroit fichier [ par loblobloblob ] Bonjour, je vous expose mon probléme en espérant que vous pourrais m'aider. je dois faire un menu extensible sur un site, pour cela j'ai créé une BDD Probléme PHP - Java script [ par kmsmss ] J'ai un probléme. J'aiune liste déroulante qui puise d'une requête sql. je voudrais recupérer la valeur value=$id_p[$i] dans la même page en faisant tableau php sql [ par fredsaxo ] Bonjour, Après trop de temps passé, je me tourne vers vous.. Je cherche à mettre en place un tableau de vignettes photo. Quand on passe sur la vigne extraire une valeur dans xml [ par hdh ] Bonjour, je me retrouve dans du php (que ce soit 4 ou 5 cela n'a pas d'incidence) et du xml... [^^choc]. je récupère correctement dans une string le checkbox en php [ par nejla25kachroudi ] Bonjour,j'ai un problème au niveau de checkbox,j'ai un formulaire sous forme d'un tableau de coordonnées des étudiants (les coordonnées sont enregistr Problème avec le tableau global $_SESSION() [ par andlauer ] Bonjour, je n'arrive pas à récupérer les valeurs du tableau global $_SESSION(). Je m'explique : j'ai un fichier index.php dans lequel je lance avan connexion a une base de donnees avec insertion d'enregistrements en php [ par eamyahc ] bonjour, s'il vous plait est ce que vous pourriez m'aidez? je suis débutante en php et je trouve d'énormes problèmes a me connecter a la base de donné cellule tableau php sql [ par jolina87 ] Bonjour, je veux vos aides s.v.p. je veux afficher les coordonnées d'un étudiant, c.à.d j'ai récupéré le nom et le prénom dans un tableau et j'ai asso


Nos sponsors


Sondage...

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,390 sec (3)

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