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à ;)