Travailler avec XML en PHP : DOMDocument, SimpleXML et XPath
XML (eXtensible Markup Language) reste l'un des formats clés pour l'échange de données, le stockage de configurations et l'intégration avec des services externes (flux RSS, SOAP, API). PHP fournit plusieurs extensions intégrées puissantes pour travailler avec XML. Dans cet article, nous allons examiner trois approches principales : DOMDocument (modèle objet de document), SimpleXML (simple et intuitif) et XPath (langage de requêtes pour la navigation).
1. Préparation : exemple de document XML
Pour tous les exemples, nous utiliserons le même fichier XML catalog.xml :
<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="1"> <title>PHP pour débutants</title> <author>Ivan Petrov</author> <price currency="RUB">1200</price> </book> <book id="2"> <title>XML en détail</title> <author>Maria Sidorova</author> <price currency="RUB">950</price> </book></catalog>2. DOMDocument — contrôle total sur XML
L'extension DOMDocument implémente le W3C DOM Level 2. Elle offre un contrôle maximal : vous pouvez créer, supprimer, modifier n'importe quel nœud, attribut et contenu textuel. Elle convient aux scénarios complexes nécessitant une gestion précise de la structure.
Chargement et lecture de XML
<?php$dom = new DOMDocument();$dom->load('catalog.xml'); // ou loadXML($xmlString)
$books = $dom->getElementsByTagName('book');foreach ($books as $book) { $id = $book->getAttribute('id'); $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; $price = $book->getElementsByTagName('price')->item(0)->nodeValue; echo "Livre #$id : $title — $author, $price RUB";}?>Création d'un nouveau XML
<?php$dom = new DOMDocument('1.0', 'UTF-8');$root = $dom->createElement('catalog');$dom->appendChild($root);
$book = $dom->createElement('book');$book->setAttribute('id', '3');$title = $dom->createElement('title', 'PHP et XML');$book->appendChild($title);$root->appendChild($book);
echo $dom->saveXML(); // affiche la chaîne XML// $dom->save('new_catalog.xml');?>3. SimpleXML — simplicité et commodité
SimpleXML est une extension plus légère qui convertit XML en un objet avec un accès aux éléments via des propriétés. Idéal pour une lecture rapide, surtout lorsque la structure XML est connue et ne nécessite pas de réglage fin.
Lecture de XML avec SimpleXML
<?php$xml = simplexml_load_file('catalog.xml'); // ou simplexml_load_string($xmlString)
foreach ($xml->book as $book) { $id = (string)$book['id']; $title = (string)$book->title; $author = (string)$book->author; $price = (string)$book->price; echo "Livre #$id : $title — $author, $price RUB";}?>Création de XML avec SimpleXML
<?php$xml = new SimpleXMLElement('<catalog></catalog>');$book = $xml->addChild('book');$book->addAttribute('id', '4');$book->addChild('title', 'SimpleXML Guide');$book->addChild('price', 800)->addAttribute('currency', 'RUB');
echo $xml->asXML();// $xml->asXML('output.xml');?>Modification des données
<?php$xml = simplexml_load_file('catalog.xml');$xml->book[0]->price = 1300; // change le prix du premier livre$xml->asXML('catalog_updated.xml');?>4. XPath — recherche flexible dans le document
Aussi dans la bibliothèque
JMH Java : guide complet avec exemples de microbenchmarking
Génération de PDF en Java : aperçu des meilleures bibliothèques (iText, Apache PDFBox, OpenPDF)
Bibliothèque standard TypeScript : aperçu complet pour les développeurs
Travailler avec XML en Kotlin : bibliothèques et outils pour l'analyse et la création
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et outils