Travailler avec XML en PHP : DOMDocument, SimpleXML et XPath

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations