Les Allergies
Alimentaires
Posez votre question Signaler

Écrire dans un fichier xml avec php

Musashii - Dernière réponse le 5 mars 2011 à 11:23
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 ?
Lire la suite 

Écrire dans un fichier xml avec php »

14 réponses
Réponse
+25
moins plus
Utilise domxml et xpath (ici sous PHP5)
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
Musashii - 13 juin 2005 à 10:07
merci pour cette réponse très rapide ^^
ça m'a été d'une grande utilité, j'ai réussi à faire ce que je voulais ^^
Ajouter un commentaire
Réponse
+5
moins plus
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
Cartman - 16 juil. 2008 à 17:04
Merci
titi - 23 déc. 2009 à 08:15
Merci
Ajouter un commentaire
Réponse
+1
moins plus
très bon exemple qui me sort une belle épine. Bravo pour la clareté de l'exmple.
Ajouter un commentaire
Réponse
+1
moins plus
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 !
Ajouter un commentaire
Réponse
+1
moins plus
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="http://www.sitemaps.org/schemas/sitemap/0.9"" ou autre.

En esperant une reponse, merci de votre attention.
Ajouter un commentaire
Réponse
+1
moins plus
a bientot j'espere =)
Ajouter un commentaire
Réponse
+1
moins plus
Portion de code:
// 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 !
Ajouter un commentaire
Réponse
+0
moins plus
je suis désolé je suis vraiment débutant et j'ai un autre problème
en fait je voudrai faire une arborescence avec les niveaux de catégories et les images, mais je sais pas vraiment comment m'y prendre avec les fonction disponibles, il vaut mieux faire ça avec simpleXML ou bien domXML ?
Ajouter un commentaire
Réponse
+0
moins plus
bonjour,

je voudrais faire la même chose,
mais j'ai la version 4.3.3 de Php sur mon serveur
si quelqu'un a une idée
merci d'avance
f
jo - 2 avril 2007 à 15:17
installe php5 ;)
mvmm - 27 août 2010 à 03:51
<?php ?>
Ajouter un commentaire
Ce document intitulé « écrire dans un fichier xml avec php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?