PHP : lire/afficher le contenu d’un fichier xml

PHP : lire/afficher le contenu d'un fichier xml

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

Laisser un commentaire