Rechercher : dans
Par :

écrire dans un fichier xml avec php

Dernière réponse le 16 jui 2008 à 17:04:43 Musashii, le 12 jun 2005 à 23:59:00 
 Signaler ce message aux modérateurs

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 ?

Meilleures réponses pour « écrire dans un fichier xml avec php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

jisisv, le 13 jun 2005 à 03:57:46
  • +12

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 Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

2

Musashii, le 13 jun 2005 à 10:07:55

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 ^^

Répondre à Musashii

3

musashii, le 13 jun 2005 à 15:58:43

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 ?

Répondre à musashii

4

fausto, le 6 mar 2007 à 16:50:31

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

Répondre à fausto

5

jo, le 2 avr 2007 à 15:17:33

Installe php5 ;)

Répondre à jo

6

Fraja, le 18 aoû 2007 à 15:44:52

Très bon exemple qui me sort une belle épine. Bravo pour la clareté de l'exmple.

Répondre à Fraja

7

Zup, le 14 jan 2008 à 11:51:05

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 !

Répondre à Zup

8

fausto, le 14 jan 2008 à 12:19:52
  • +1

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

Répondre à fausto

9

 Cartman, le 16 jui 2008 à 17:04:43

Merci

Répondre à Cartman