Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 1 revision

La classe XMLReader permet de lire des fichiers ou des chaînes XML et de les convertir en tableaux PHP (array). Elle est conçue pour gérer les structures complexes : listes d'éléments répétés, sections CDATA et attributs de balises.

Namespace : Magepattern\Component\XML\XMLReader

Liste des méthodes

Méthode Paramètres Retour Description
toArray() string $xml ?array Convertit une chaîne XML brute en tableau.
fromFile() string $path ?array Charge un fichier .xml et le convertit.

Gestion des Attributs et Listes

Cette classe adopte une structure intelligente pour ne perdre aucune donnée.

  1. Nœud simple
<titre>Bonjour</titre>

Devient : ['titre' => 'Bonjour']

  1. Nœud avec Attributs Les attributs sont isolés dans une clé @attributes pour éviter les conflits.
<user id="42" role="admin">Aurelien</user>

Devient :

[
    'user' => [
        '@attributes' => ['id' => '42', 'role' => 'admin'],
        '@value'      => 'Aurelien'
    ]
]
  1. Listes (Éléments répétés) Le parser détecte automatiquement les répétitions et crée un tableau indexé.
<panier>
    <item id="1">Pomme</item>
    <item id="2">Poire</item>
</panier>
Devient : 
[
    'item' => [
        0 => ['@attributes' => ['id' => '1'], '@value' => 'Pomme'],
        1 => ['@attributes' => ['id' => '2'], '@value' => 'Poire']
    ]
]

Exemple Complet : XML vers JSON C'est ici que la puissance du framework se révèle. Vous lisez le XML avec XMLReader, puis vous le convertissez proprement avec JSON.

use Magepattern\Component\XML\XMLReader;
use Magepattern\Component\HTTP\JSON;

// 1. Lecture du XML (avec attributs)
$data = XMLReader::fromFile('export_users.xml');

// 2. Traitement éventuel en PHP
if (isset($data['user'])) {
    foreach ($data['user'] as &$u) {
        // On modifie une donnée avant l'export
        $u['@attributes']['checked'] = 'true';
    }
}

// 3. Conversion finale en JSON
$jsonTool = new JSON();
$jsonString = $jsonTool->encode($data);

echo $jsonString;

Usage de base

  1. Lire une chaîne XML
use Magepattern\Component\XML\XMLReader;

$xml = '<?xml version="1.0"?>
        <user>
            <id>10</id>
            <name>Aurelien</name>
            <role>Admin</role>
        </user>';

$data = XMLReader::toArray($xml);
echo $data['name']; // Affiche: Aurelien
  1. Gérer les listes (nœuds multiples) Si le XML contient plusieurs balises identiques, la classe les regroupe automatiquement dans un sous-tableau.
$data = XMLReader::fromFile('flux_actualites.xml');
foreach ($data['item'] as $item) {
    echo $item['title'];
}

Sécurité & Performance

LibXML Flags : Utilise LIBXML_NOCDATA pour fusionner les sections CDATA dans les nœuds de texte, évitant ainsi des structures de tableaux trop complexes.

Erreurs : En cas de XML mal formé, la classe retourne null et enregistre l'erreur dans le Logger système, évitant ainsi un crash de l'application.

Clone this wiki locally