Travailler avec XML en PHP : de l'analyse simple à la création de documents complexes
XML (eXtensible Markup Language) reste l'un des formats clés pour l'échange de données, les fichiers de configuration et les services web (SOAP, RSS/Atom). PHP fournit plusieurs extensions intégrées puissantes pour travailler avec XML, permettant de résoudre pratiquement toutes les tâches — de l'analyse de simples flux RSS à la génération de documents complexes avec des espaces de noms. Dans cet article, nous allons examiner les outils principaux : SimpleXML, DOMDocument et XMLReader, et apprendre à créer des documents XML à la volée.
1. SimpleXML — une analyse rapide et pratique
SimpleXML est l'extension la plus simple pour travailler avec XML. Elle convertit un document XML en un objet dont les propriétés peuvent être lues comme des tableaux et des objets ordinaires. Idéal pour les documents petits et moyens, lorsqu'une navigation complexe n'est pas nécessaire.
Chargement de XML à partir d'une chaîne ou d'un fichier
<?php// Depuis une chaîne$xmlString = '<book><title>PHP pour débutants</title><author>Ivan Petrov</author></book>';$book = simplexml_load_string($xmlString);
// Depuis un fichier$books = simplexml_load_file('books.xml');
echo $book->title; // PHP pour débutantsecho $book->author; // Ivan Petrov?>Travailler avec les attributs et les éléments multiples
<?php$xml = '<library> <book id="1"> <title>PHP Objects</title> <author>Matt Zandstra</author> </book> <book id="2"> <title>Clean Code</title> <author>Robert C. Martin</author> </book></library>';
$library = simplexml_load_string($xml);
foreach ($library->book as $book) { echo 'ID : ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';}// ID : 1 — PHP Objects (Matt Zandstra)// ID : 2 — Clean Code (Robert C. Martin)?>Important : SimpleXML ne prend pas en charge les requêtes XPath complexes avec conditions (uniquement les chemins simples). Pour des requêtes plus puissantes, utilisez DOMDocument ou XPath.
2. DOMDocument — un contrôle total sur XML
DOMDocument implémente l'API DOM du W3C et donne un contrôle total sur la structure du document. Vous pouvez ajouter, supprimer, modifier n'importe quel nœud, travailler avec des espaces de noms et exécuter des requêtes XPath de toute complexité. C'est le choix pour les tâches professionnelles.
Analyse et navigation avec DOMDocument
<?php$dom = new DOMDocument();$dom->load('books.xml');
// Récupérer tous les éléments <book>$books = $dom->getElementsByTagName('book');
foreach ($books as $book) { $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; echo "Livre : $title, Auteur : $author<br>";}?>XPath — des requêtes puissantes vers XML
<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);
// Trouver tous les livres avec un prix > 500$expensiveBooks = $xpath->query('//book[price > 500]');
foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' roubles.<br>';}?>3. Création de documents XML
PHP permet non seulement de lire, mais aussi de créer des documents XML. Examinons les deux approches.
Création de XML via SimpleXML
<?php$xml = new SimpleXMLElement('<catalog></catalog>');
$product = $xml->addChild('product');$product->addChild('name', 'Ordinateur portable');$product->addChild('price', 75000);$product->addAttribute('id', '12 Aussi dans la bibliothèque
Bibliothèque WebSocket en C++ : guide complet pour choisir et utiliser
Mise en cache en Swift (iOS/macOS) : Redis, NSCache et autres solutions
Retrofit pour Kotlin : guide complet avec exemples
DomPDF pour PHP : guide complet avec exemples