replaceNode [PHP+XML] - PHP - Programmation
Marsh Posté le 17-05-2006 à 10:52:55
apprends à te servir du DOM
la tu cherches en fait à modifier la valeur d'un attribut en remplaçant un noeud, c'est nawak ( et d'ailleurs replaceNode ne prend qu'un param).
Il faut que tu utilises la fonction setAttribute.
edit: Et sans vouloir ronchonner, je t'avais déjà expliqué tout ça ici: http://forum.hardware.fr/hardwaref [...] 0344-1.htm
Marsh Posté le 17-05-2006 à 11:30:24
Je sais que t'avais repondu mais quand tu t'y connait pas c'est dur de realiser le projet. COmme tu me l'a expliquer j'ai utiliser setAttribute.
<?php
$idf=$_POST['id'];
$mlabel1=$_POST["titre"];
$mdata1=$_POST["l_videos"];
$mdescription=$_POST["description"];
$mrealiser=$_POST["realiser"];
$mdate=$_POST["date"];
$marticle=$_POST["l_article"];
$mnomarticle="(lire la suite)";
if(!$dom=DOMDocument::load("videos.xml" )) {
echo "Erreur lors de l'analyse du document\n";
exit;
}
$filesNodeList = $dom->getElementsByTagName('File');
foreach($filesNodeList as $fileNode){
if ( $fileNode->getAttribute('id') == $idf){
$id=$fileNode->removeAttribute('id');
$id_a=$fileNode->setAttribute('id',$idf);
$titre=$fileNode->removeAttribute('label1');
$titre_a=$fileNode->setAttribute('label1',$mlabel1);
$videos=$fileNode->removeAttribute('data1');
$videos_a=$fileNode->setAttribute('data1',$mdata1);
$descri=$fileNode->removeAttribute('description');
$descri_a=$fileNode->setAttribute('description',$mdescription);
$realiser=$fileNode->removeAttribute('realiser');
$realiser_a=$fileNode->setAttribute('realiser',$mrealiser);
$date=$fileNode->removeAttribute('date');
$date_a=$fileNode->setAttribute('date',$mdate);
$urlnom=$fileNode->removeAttribute('urlnom');
$urlnom_a=$fileNode->setAttribute('urlnom',$mnomarticle);
$urllien=$fileNode->removeAttribute('urllien');
$urllien_a=$fileNode->setAttribute('urllien',$marticle);
}
}
$dom->save("videos.xml" );
echo "reussi";
?>
Ca marche...enfin normalement...
Merci a toi de m'avoir aider...
Marsh Posté le 17-05-2006 à 11:38:38
Petite optimisation: t'as pas besoin de faire les removes. Si l'attribut existe déjà, la valeur sera mise à jour
Marsh Posté le 17-05-2006 à 16:12:14
J'ai une tite question, tu m'avais dit de ne plus utiliser domxml mais DOM tout court mais une fois passer sur l'hebergeur( qui utilise php 4.3.1) voila les 2 erreurs qui apparait:
Fatal error: Undefined class name 'domdocument' in
et
Parse error: parse error, unexpected T_OBJECT_OPERATOR in
Sur free ca marchais, du moins pour la 2eme erreur.
Est ce du a la version de php?
Marsh Posté le 18-05-2006 à 09:55:30
dans ce genre de situation tu as
Code :
|
pour savoir exactement ce dont tu disposes!
Marsh Posté le 18-05-2006 à 10:17:30
je l'ai deja fait mais le truc c'est que j'ai pas l'extension DOMXML comme sur free...
domxml
DOM/XML enabled
DOM/XML API Version 20020815
libxml Version 20624
HTML Support enabled
XPath Support enabled
XPointer Support enabled
DOM/XSLT enabled
libxslt Version 1.1.16
libxslt compiled against libxml Version 2.6.24
Cette extension n'y ai pas...
Je croix bien qu'il faut que j'abandonne PHP XML non?
En passant par SQL ca sera plus facile?
Marsh Posté le 18-05-2006 à 10:27:11
Fais ta base de donnée manuellement une fois pour toutes, à base de fichiers txt (trouve une autre ext) sans XML. C'est la seule solution pour ne pas dépendre d'un hébergeur. Par contre, pour des gros projets, oublie.
Marsh Posté le 18-05-2006 à 10:52:29
Si je passe par SQL, je peux pas généré de fichier XML, c'est mort de chez mort? Parce qu'en fait j'ai mon flahs qui lit un fichier xml et qui affiche des données...
Avec SQL je supprime ajout modifie et que ensuite je génére le fichier XML a chaque action, c'est possible?
Marsh Posté le 18-05-2006 à 10:57:24
Fourmiz83 a écrit : Si je passe par SQL, je peux pas généré de fichier XML, c'est mort de chez mort? Parce qu'en fait j'ai mon flahs qui lit un fichier xml et qui affiche des données... |
Tu peux toujours réécrire avec fopen et tout le tralalala ton fichier XML C'est pas toujours la mort suivant les cas, et avec quelques regexp, on peut faire des miracles et des trucs pas trop lents surtout en utilisant des motifs PCRE.
Marsh Posté le 18-05-2006 à 11:02:06
Mouais oki...
Sinon si j'utilise ADODB et recorset est ce que le serveur va le supporter?
Marsh Posté le 17-05-2006 à 10:44:24
Salut a tous,
Je souhaite modifier un fichier xml dynamiquement. Dans ce cas la, je veut modifier les attribut d'un noeud. Je sais qu'il faut que j'utilise replaceNode mais a vrai dire je suis un peu perdu.
Fichier xml:
<Liste>
<File id="5" label1="la chose" data1="videos/videos4.flv" description="blablabla c\'est super cool ce machin chose" realiser="machin" date="01/01/01" url1="www.google.fr"/>
</Liste>
Code php:
<?php
$idf=$_POST['id'];
$mlabel1=$_POST["titre"];
$mdata1=$_POST["l_videos"];
$mdescription=$_POST["description"];
$mrealiser=$_POST["realiser"];
$mdate=$_POST["date"];
$marticle=$_POST["l_article"];
$mnomarticle="(lire la suite)";
if(!$dom=DOMDocument::load("videos.xml" )) {
//if(!$dom->load("videos.xml" )){
echo "Erreur lors de l'analyse du document\n";
exit;
}
$filesNodeList = $dom->getElementsByTagName('File');
foreach($filesNodeList as $fileNode){
$label1=$fileNode->getAttribute('label1');
$data1=$fileNode->getAttribute('data1');
if ( $fileNode->getAttribute('id') == $idf){
$titre=$fileNode->replaceNode($mlabel1, $label1);
$video=$fileNode->replaceNode($mdata1,$data1);
}
}
$dom->save("videos.xml" );
echo "reussi";
?>
Mon PHP ne marche pas... Est ce que quelqu'un pourrait m'aider?