Page 1 sur 1

Quelques fonctions DOM pour SimpleXML

Posté : 24 août 2007, 00:17
par Hubert Roksor
Pour ceux qui ont à traiter du XML, apprécient la simplicité de SimpleXML mais déplorent l'absence de certaines méthodes de modification de l'arbre, je vous propose une implémentation des méthodes appendChild(), insertBefore(), replaceChild() et removeChild() que l'on peut trouver dans l'extension DOM. Elles s'utilisent de la même façon que leurs homologues et devraient posséder les mêmes limitations.

Pour utiliser cette classe, il vous suffit de l'indiquer au moyen du second paramètre des fonctions simplexml_load_file() et simplexml_load_string()

Télécharger le fichier chez Google Code : http://sxe.googlecode.com/svn/trunk/sxe.php

Posté : 12 sept. 2007, 02:58
par Hubert Roksor
Classe mise à jour avec l'addition de quelques méthodes pas entièrements testées :
  • delete() supprime l'élément qui l'invoque.
    $xml->fruits->orange->delete();
    ...qui revient à exécuter
    unset($xml->fruits->orange);
  • remove() fait pareil que delete() mais retourne l'élément supprimé (ou FALSE en cas d'échec)
  • deleteNodes($xpath) supprime tous les éléments correspondants à un XPath, par exemple
    // supprimer tous les éléments "fruit" dont l'attribut "famille" est "agrume", n'importe où dans l'arbre XML
    $xml->deleteNodes('//fruit[@famille="agrume"]');
  • removeNodes($xpath) fait pareil que deleteNodes() mais renvoit un tableau contenant les éléments supprimés
  • appendXML($xml) parse ee ajoute du contenu XML, exemple
    $xml->groupes->appendXML('<groupe id="32"><titre>Mon groupe</titre><membres>...</membres></groupe>');

Posté : 01 mai 2008, 17:59
par Arcanis
Très utile.
Par contre, j'obtient une erreur de façon aléatoire en utilisant la methode deleteNodes:

Code : Tout sélectionner

Fatal error: Call to a member function removeChild() on a non-object in ...\sxe.obj.php on line 481
ça arrive rarement, mais c'est un peu embêtant quand ça survient.

Autrement c'est génial :)