Ressources » PHP
Ce tutoriel a pour but de vous faire découvrir d'une manière simple et intuitive les principales possibilités offertes par PHP dans sa version 5 pour manipuler des données XML.
L'exemple ci-dessous servira de support à l'ensemble de ce tutoriel. Il s'agit d'un carnet d'adresse sauvegardé dans un fichier XML très simple.
Ce tutoriel n'est pas un cours sur le XML, mais un petit rappel ne fait pas de mal...Lire et écrire un fichier XML avec DOM.
$tree = new domDocument();
$tree->load('carnet.xml');
$noms = $tree->getElementsByTagName('nom');
echo "Nom : ".$noms->item(0)->nodeValue;
Ces deux méthodes permettent de manipuler assez simplement un document XML.$tree = new domDocument();
$tree->load('carnet.xml');
$noms = $tree->getElementsByTagName('nom');
$nom = $noms->item(0);
$nom->nodeValue = 'Dupont';
//Pour afficher le résultat dans le fichier
echo $tree->saveXML();
//Pour le sauvegarder dans le fichier "carnet.xml"
$tree->save("carnet.xml")
DOM (Document Object Model), est une spécification du W3C (World Wide Web Consortium) définissant la structure d'un document sous forme d'une hiérarchie d'objets, afin de simplifier l'accès aux éléments constitutifs du document.
Plus exactement DOM est un langage normalisé d'interface (API, Application Programming Interface), indépendant de toute plateforme et de tout langage, permettant à une application de parcourir la structure du document et d'agir dynamiquement sur celui-ci. Ainsi Javascript et ECMAScript utilisent DOM pour naviguer au sein du document HTML, ce qui leur permet par exemple de pouvoir récupérer le contenu d'un formulaire, le modifier, etc.
$tree = new domDocument();
$tree->load('carnet.xml');
echo <<
L'élément racine est : {$tree->documentElement->nodeName}.
Ce dernier possède {$tree->documentElement->childNodes->length} élément(s) fils.
rvd;
XPath permet de faire des recherches avancées au sein d'un document XML.
Il fixe des contraintes très précises portant principalement sur le chemin entre la racine du document et l'élément recherché.
Par exemple, une requète permet de lister les éléments descendants de adresse, nommés numero et possédant un attribut type.
L'exemple ci-dessus permet de voir les possibilités de XPath, mais ce n'est qu'un aperçu. Pour plus d'information, mieux vaut consulter la recommandation du W3C pour voir toute l'étendu des capacités de ce langage.$tree = new domDocument();
$tree->load('carnet.xml');
$monxpath = new domXPath($tree);
$liste = $monxpath->query('adresse/nom');
for($i=0; $i < $liste->length; $i++){
echo $liste->item(0)->nodeValue;
}
SimpleXML est une alternative très séduisante, notamment pour les débutants, car elle permet de manipuler les fichiers XML très simplement.
Difficile de faire plus simple !$racine = simplexml_load_file('carnet.xml');
$racine->adresse->nom = 'Tomet';
$racine->adresse->prenom = 'Jerry';
$racine->adresse->adresse = '18 rue de Nantes';
//Pour afficher le résultat dans le fichier
print $racine->asXML();
$racine = simplexml_load_file('carnet.xml');
$elements = $racine->xpath('adresse/nom');
while(list( , $node) = each($elements)) {
echo 'Nom : '.$node."n";
}
Pourquoi utiliser DOM si SimpleXML est si simple ?
Pour 2 raisons :
Pourquoi utiliser le XML comme base de données ?
Il est vrai que manipuler un fichier avec PHP et DOM révèle une certaine complexité, cependant dans certains cas, il apporte bien plus d'avantage qu'une base de données MySQL.
En effet, grâce à ce langage, développer une application multi supports et multi plate-formes est extrèmement plus aisé.
Ainsi, si vous souhaitez partager des informations, le fil RSS sera l'idéal!
Si vous changez de serveur, pas de problème de récupération et de conversion de la base de données.
Idem si vous souhaitez développer une application multi plate-formes (mobile, navigateur, etc.)
Quelques bonnes adresses :