En PHP, il est très facile de manipuler un fichier xml. A cet effet, il existe la fonction simplexml_load_file().
Considérons le fichier xml suivant dénommé films.xml :
<?xml version="1.0" encoding="utf-8"?> <films> <film> <titre>Le Chemin du pardon</titre> <realisateur>Stuart Hazeldine</realisateur> <sortie>2017</sortie> </film> <film> <titre>Le Guerrier pacifique</titre> <realisateur>Victor Salva</realisateur> <sortie>2 juin 2006</sortie> </film> <film> <titre>Faute d'amour</titre> <realisateur>Andreï Zviaguintsev</realisateur> <sortie>1 juin 2017</sortie> </film> <film> <titre>Pentagon Papers</titre> <realisateur>Steven Spielberg</realisateur> <sortie>22 décembre 2017</sortie> </film> <film> <titre>Conversations avec Dieu</titre> <realisateur>Stephen Simon</realisateur> <sortie>5 septembre 2006</sortie> </film> </films>
Nous allons récupérer le contenu du fichier dans une variable en faisant ceci :
<?php //le fichier xml est au même niveau que le fichier PHP qui le manipule $fichier = 'films.xml'; $contenu = simplexml_load_file($fichier); ?>
Cette variable $contenu contient la valeur du fichier xml et nous pouvons l’afficher avec un print_r().
<?php echo '<pre>'; print_r($contenu); echo '</pre>'; ?>
et nous avons ce résultat :
SimpleXMLElement Object ( [film] => Array ( [0] => SimpleXMLElement Object ( [titre] => Le Chemin du pardon [realisateur] => Stuart Hazeldine [sortie] => 2017 ) [1] => SimpleXMLElement Object ( [titre] => Le Guerrier pacifique [realisateur] => Victor Salva [sortie] => 2 juin 2006 ) [2] => SimpleXMLElement Object ( [titre] => Faute d`amour [realisateur] => Andreï Zviaguintsev [sortie] => 1 juin 2017 ) [3] => SimpleXMLElement Object ( [titre] => Pentagon Papers [realisateur] => Steven Spielberg [sortie] => 22 décembre 2017 ) [4] => SimpleXMLElement Object ( [titre] => Conversations avec Dieu [realisateur] => Stephen Simon [sortie] => 5 septembre 2006 ) ) )
Comme vous pouvez le remarquer, notre variable objet contient un tableau regroupant chaque noeud (film) où chaque ligne constitue aussi un objet. Pour l’afficher de façon plus sympa, on peut faire une boucle sur la variable objet comme ceci :
<?php foreach($contenu as $film){ echo 'Titre : '.$film->titre.' | Réalisateur : '.$film->realisateur.' | Année de sortie : '.$film->sortie.'<br>'; } ?>
Et le résultat :
Titre : Le Chemin du pardon | Réalisateur : Stuart Hazeldine | Année de sortie : 2017 Titre : Le Guerrier pacifique | Réalisateur : Victor Salva | Année de sortie : 2 juin 2006 Titre : Faute d'amour | Réalisateur : Andreï Zviaguintsev | Année de sortie : 1 juin 2017 Titre : Pentagon Papers | Réalisateur : Steven Spielberg | Année de sortie : 22 décembre 2017 Titre : Conversations avec Dieu | Réalisateur : Stephen Simon | Année de sortie : 5 septembre 2006
Lire les attributs
Imaginons maintenant que dans la structure du fchier xml nous avons des attributs comme ceci :
<?xml version="1.0" encoding="utf-8"?> <films> <film type="spirituel"> <titre ordre="à la une">Le Chemin du pardon</titre> <realisateur>Stuart Hazeldine</realisateur> <sortie>2017</sortie> </film> <film type="spirituel"> <titre ordre="normal">Le Guerrier pacifique</titre> <realisateur>Victor Salva</realisateur> <sortie>2 juin 2006</sortie> </film> <film type="amour"> <titre ordre="à la une">Faute d'amour</titre> <realisateur>Andreï Zviaguintsev</realisateur> <sortie>1 juin 2017</sortie> </film> <film type="politique"> <titre ordre="normal">Pentagon Papers</titre> <realisateur>Steven Spielberg</realisateur> <sortie>22 décembre 2017</sortie> </film> <film type="spirituel"> <titre ordre="normal">Conversations avec Dieu</titre> <realisateur>Stephen Simon</realisateur> <sortie>5 septembre 2006</sortie> </film> </films>
Pour pouvoir donc récupérer la valeur de ces attributs, on fera donc ceci :
<?php foreach($contenu as $film){ echo 'Titre : '.$film->titre.' | Réalisateur : '.$film->realisateur.' | Année de sortie : '.$film->sortie.' | Type : '.$film['type'].' | Ordre : '.$film->titre['ordre'].'<br>'; } ?>
Et ça nous donne :
Titre : Le Chemin du pardon | Réalisateur : Stuart Hazeldine | Année de sortie : 2017 | Type : spirituel | Ordre : à la une Titre : Le Guerrier pacifique | Réalisateur : Victor Salva | Année de sortie : 2 juin 2006 | Type : spirituel | Ordre : normal Titre : Faute d'amour | Réalisateur : Andreï Zviaguintsev | Année de sortie : 1 juin 2017 | Type : amour | Ordre : à la une Titre : Pentagon Papers | Réalisateur : Steven Spielberg | Année de sortie : 22 décembre 2017 | Type : politique | Ordre : normal Titre : Conversations avec Dieu | Réalisateur : Stephen Simon | Année de sortie : 5 septembre 2006 | Type : spirituel | Ordre : normal