écrire dans un fichier xml avec php
Musashii
-
UzUrpateur Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
UzUrpateur Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
bonjour,
je débute avec le xml et php et je me pose une question.
En fait grâce à simpleXML j'ai réussi à récupérer le XML contenu dans me fichier, et à naviguer dedans pour
récupérer les donnée dont j'ai besoin, mais je ne sais pas comment faire pour rajouter des donnée.
Concrètement, j'ai un fichier de ce type :
Code:
<categorie id="cat1">
<categorie id="sous_cat1">
<img id="img1"/>
</categorie>
</categorie>
Et je voudrai rajouter <img id="img2"/> à la suite de l'img1
Comment je pourrai faire ça ?
je débute avec le xml et php et je me pose une question.
En fait grâce à simpleXML j'ai réussi à récupérer le XML contenu dans me fichier, et à naviguer dedans pour
récupérer les donnée dont j'ai besoin, mais je ne sais pas comment faire pour rajouter des donnée.
Concrètement, j'ai un fichier de ce type :
Code:
<categorie id="cat1">
<categorie id="sous_cat1">
<img id="img1"/>
</categorie>
</categorie>
Et je voudrai rajouter <img id="img2"/> à la suite de l'img1
Comment je pourrai faire ça ?
A voir également:
- écrire dans un fichier xml avec php
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
9 réponses
Utilise domxml et xpath (ici sous PHP5)
exemple
Lire par exemple:
http://php.easynet.be/manual/en/ref.dom.php
http://php.easynet.be/manual/fr/ref.dom.php
et le miroir qui te convient le mieux.
Tu sauves le document dans un fichier avec
$doc->save("le_nom_du_fichier.xml");
Johan
exemple
johand@horus:~/src/php/php5$ cat test.php <?php $anXMLString='<?xml version="1.0" encoding="UTF-8"?> <categorie id="cat1"> <categorie id="sous_cat1"> <img id="img1"/> </categorie> </categorie>'; $doc = new domDocument(); $doc->loadXML($anXMLString); $xpathdoc= new DOMXPath($doc); $nodes = $xpathdoc->query('//categorie[@id="sous_cat1"]'); $anotherNode = $doc->createElement("img",""); $anotherNode->setAttribute("id", "blahblah"); $nodes->item(0)->appendChild($anotherNode); $res = $doc->saveXML(); print($res); ?>
Lire par exemple:
http://php.easynet.be/manual/en/ref.dom.php
http://php.easynet.be/manual/fr/ref.dom.php
et le miroir qui te convient le mieux.
Tu sauves le document dans un fichier avec
$doc->save("le_nom_du_fichier.xml");
Johan
hello
pas besoin de php5
en php4 :
[code]
//*******************************************************************************************************
//génération XML
//*******************************************************************************************************
$xml_upload = "dossier photos/";
$xml_upload .= "$nom_photo";
//*******************************************************************************************************
$filename = 'chemin vers le fichier XML';
$newContent = "\r\t<image path=\"".$xml_upload."\" />";
$newContent .= "\r</gallery>";
$content = file_get_contents($filename);
$newContent = str_replace('</gallery>', $newContent, $content);
$handle = fopen($filename, 'w');
fwrite($handle, $newContent);
fclose($handle);
if (fwrite) {
echo "<table width=\"58%\" border=\"0\" align=\"center\" class=\"bloc1\">";
echo "<br>";
echo "<tr>";
echo "<br>";
echo "<br>";
echo "<td width=\"79%\" class=\"bloc1\"><pre><center>Diaporama mis à jour</center></pre></td>";
echo "<br>";
echo "</tr>";
echo "<br>";
echo "</table>";
}
//*******************************************************************************************************
[/code]
++
f
pas besoin de php5
en php4 :
[code]
//*******************************************************************************************************
//génération XML
//*******************************************************************************************************
$xml_upload = "dossier photos/";
$xml_upload .= "$nom_photo";
//*******************************************************************************************************
$filename = 'chemin vers le fichier XML';
$newContent = "\r\t<image path=\"".$xml_upload."\" />";
$newContent .= "\r</gallery>";
$content = file_get_contents($filename);
$newContent = str_replace('</gallery>', $newContent, $content);
$handle = fopen($filename, 'w');
fwrite($handle, $newContent);
fclose($handle);
if (fwrite) {
echo "<table width=\"58%\" border=\"0\" align=\"center\" class=\"bloc1\">";
echo "<br>";
echo "<tr>";
echo "<br>";
echo "<br>";
echo "<td width=\"79%\" class=\"bloc1\"><pre><center>Diaporama mis à jour</center></pre></td>";
echo "<br>";
echo "</tr>";
echo "<br>";
echo "</table>";
}
//*******************************************************************************************************
[/code]
++
f
J'ai un petit prob avec cet exemple
Parse error: parse error, unexpected T_OBJECT_OPERATOR
ca correspondrait a la ligne $nodes->item(0)->appendChild($anotherNode);
A quoi cela pourrait il etre du, ma version de php est la 4.4.7 ? je dois obligatoirement avoir la 5 ?
(xpath activé)
merci !
Parse error: parse error, unexpected T_OBJECT_OPERATOR
ca correspondrait a la ligne $nodes->item(0)->appendChild($anotherNode);
A quoi cela pourrait il etre du, ma version de php est la 4.4.7 ? je dois obligatoirement avoir la 5 ?
(xpath activé)
merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour a tous,
j'ai lut votre post et me suis dit que peut être vous pourriez m'aider.
J'aimerai en fait tirer d'un fichier .txt (chaque ligne une url)
un fichiers .xml avec une ossature de type :"xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/"" ou autre.
En esperant une reponse, merci de votre attention.
j'ai lut votre post et me suis dit que peut être vous pourriez m'aider.
J'aimerai en fait tirer d'un fichier .txt (chaque ligne une url)
un fichiers .xml avec une ossature de type :"xmlns="https://www.sitemaps.org/schemas/sitemap/0.9/"" ou autre.
En esperant une reponse, merci de votre attention.
Portion de code:
// johand@horus:~/src/php/php5$ cat test.php
fonctionnel !
// johand@horus:~/src/php/php5$ cat test.php
<?php $anXMLString='<?xml version="1.0" encoding="UTF-8"?> <categorie id="cat1"> <categorie id="sous_cat1"> <img id="img1"/> </categorie> </categorie>'; $doc = new domDocument(); $doc->loadXML($anXMLString); $xpathdoc= new DOMXPath($doc); $nodes = $xpathdoc->query('//categorie[@id="sous_cat1"]'); $anotherNode = $doc->createElement("img",""); $anotherNode->setAttribute("id", "blahblah"); $nodes->item(0)->appendChild($anotherNode); $res = $doc->saveXML(); print($res); ?>
fonctionnel !
ça m'a été d'une grande utilité, j'ai réussi à faire ce que je voulais ^^