Rappelons que SimpleXMLne permet que de lire les données dans les versions de PHP inférieur à 5.1.3. Les fonctions attachées à SimpleXML permettent d'atteindre facilement le contenu de n'importe quelle balise ou attribut du document XML.
En fait, on peut même modifier ce contenu, mais pas ajouter de balise.
A ce propos, je vous recommande l'article de JournalduNet sur SimpleXML
Il est à noter que depuis PHP 5.1.3, SimpleXML est capable d'ajouter des enfants et des attributs. Vous êtes donc invités à vérifier votre version de PHP (par le phpinfo() bien entendu).
Pour ajouter des balises, on peut :
- Ecrire dans le fichier de façon classique en PHP
A ce moment, le principal problème réside dans le fait d'écrire au bon endroit. En effet, pour écrire au début du fichier, il faut écrire après la déclaration XML[/color]Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
Et même après la première balise contenante. (définie par le créateur du fichier).
Ou bien, si l'on veut écrire à la fin, il faut écrire avant dernière balise fermante contenante.
Fonctions utiles :
- fpassthru() permet de lire le contenu du fichier du pointeur à la fin.
- fopen() (mais un coup d'oeil au tutorial PHPFrance vous éclairera sur votre utilité).
- feof() permet de vérifier si le pointeur est à la fin du fichier
- fseek() pour déplacer le pointeur
- Utiliser les fonctions de DOMXML
Si vous avez déjà manipulé le DOM à l'aide de Javascript, vous ne serez pas perdu, car c'est le même principe.
On ajoute des noeuds (=balise), on les accroche à un noeud parent, on leur spécifie des attributs, du contenu texte, ...
$dom = new DOMDocument('test1');
$dom->load($fichier);
/*nouvelle balise <file>*/
$new_file = $dom->createElement('file');
/*nouvelle balise <type>*/
$new_type = $dom->createElement('type');
$type_content = $dom->createTextNode('ppt');
$letype = $new_type->appendChild($type_content);
$lefile = $new_file->appendChild($new_type);
/*on rattache tout le <file> au DOM*/
$dom->appendChild($new_file);
/*on enregistre dans un fichier*/
$dom->save("test.xml");
Ensuite, une fois que l'arbre est construit, on enregistre dans le fichier avec DOM->save()