im2.jpg
Imprimer

Parser du XML en PHP: xmlAnalyser

Posted in Développements PHP

Jeudi 21 janvier 2010,

Dans cet article je vais vous présenter comment parser du XML à l’aide de la classe PHP xmlAnalyser. Cette classe vous permet de transformer un fichier XML en tableau PHP.

Cette classe analyse le XML et le transforme en un tableau contenant :
- le type de la balise
- un tableau contenant les paramètres
- le contenu de la balise
- les éventuels enfants

 

Prenons un exemple : soit le fichier XML suivant :

<root>
        <element param1="abc" param2="123">
                <text>bonjour</text>
                <text>bonjour2</text>
        </element>
        <element>
                <text>Coment ca va?</text>
                <text>Bien</text>
        </element>
</root>

Soit le fichier PHP suivant : <?php
    
//on inclus la classe
    
require_once "xmlanalyser.class.php";

    
//On charge le xml
    
$xml file_get_contents("test.xml");
    
//On instancie la classe 
    
$xmlAnalyser = new xmlAnalyser($xml);
    
//On récupère le tableau
    
$tab $xmlAnalyser->xmlToArray();
    
//On affiche!
    
print_r($tab);
?>

Cela retourne un tableau dans $tab du type :

Array
(
   [0] => Array
       (
           [type] => ROOT
           [attributes] =>
           [value] =>
           [child] => Array
               (
                   [0] => Array
                       (
                           [type] => ELEMENT
                           [attributes] => Array
                               (
                                   [PARAM1] => abc
                                   [PARAM2] => 123
                               )

                           [value] =>
                           [child] => Array
                               (
                                   [0] => Array
                                       (
                                           [type] => TEXT
                                           [attributes] =>
                                           [value] => bonjour
                                       )
                                   [1] => Array
                                       (
                                           [type] => TEXT
                                           [attributes] =>
                                           [value] => bonjour2
                                       )
                               )
                       )
                   [1] => Array
                       (
                           [type] => ELEMENT
                           [attributes] =>
                           [value] =>
                           [child] => Array
                               (
                                   [0] => Array
                                       (
                                           [type] => TEXT
                                           [attributes] =>
                                           [value] => Coment ca va?
                                       )
                                   [1] => Array
                                       (
                                           [type] => TEXT
                                           [attributes] =>
                                           [value] => Bien
                                       )
                               )
                       )
               )
       )
)

Ce tableau contient les éléments présents dans le ficher XML. Chaque élément contient plusieurs valeurs :
- type : Nom de la balise
- attributes : Tableaux des attributs de l’élément : clef=>valeur
- value : valeur contenue dans la balise
- child : Tableaux contenant les éléments enfants

Cette classe ne permet, à ce jour, que de lire un fichier XML et non pas de créer ou modifier celui-ci.

Modifications apportés par la V1.1 : Meilleure gestion de l’analyse du fichier, afin d’éviter certains "Notices" qui pouvaient apparaitre en fonction de la configuration de PHP.

Télécharger V1.1 (Zip)