Tutoriel PHP XML : créer, analyser, lire avec un exemple

⚡ Résumé intelligent

PHP et XML fonctionnent de concert pour structurer, stocker et échanger des données entre systèmes. Ce guide explique le fonctionnement de XML, du DOM et des analyseurs XML, puis montre comment lire un document XML avec SimpleXML et comment en créer un avec la classe DOMDocument, et enfin quand utiliser chacun de ces outils.

  • 📄 Qu'est-ce que le XML ? XML signifie Extensible Markup Language (langage de balisage extensible), un format basé sur des balises qui permet de définir des balises personnalisées pour structurer et transporter des données.
  • 🌳 Le DOM : Le modèle DOM (Document Object Model) considère un document XML ou HTML comme un arbre, ce qui permet au code de naviguer et de modifier les nœuds.
  • (I.e. Analyseurs XML : Un analyseur syntaxique convertit un document XML en un objet DOM que PHP, JavaScénario, ou Python peut lire et modifier.
  • ???? Lecture du XML : simplexml_load_file charge un fichier dans des objets, vous accédez donc aux enregistrements avec une syntaxe fléchée comme $xml->record->name.
  • Création du fichier XML : La classe DOMDocument construit un document nœud par nœud avec createElement et appendChild, puis enregistre le fichier.
  • SimpleXML vs DOM : SimpleXML est rapide à lire, tandis que DOMDocument convient à la création précise et à la manipulation complexe.
  • 🤖 Assistance IA : Les outils d'IA peuvent générer du code d'analyse syntaxique pour une structure XML spécifique et convertir entre les formats XML, JSON et les tableaux PHP.

PHP et XML

Qu'est-ce que XML?

XML est l'acronyme de Extensible Markup Language.

Le format XML est utilisé pour structurer, stocker et transporter des données d'un système à un autre.

XML est similaire à HTML. Il utilise des balises ouvrantes et fermantes. Contrairement à HTML, XML permet aux utilisateurs de définir leurs propres balises.

Qu'est-ce que DOM?

DOM est l'acronyme de Document Object Model.

Il s'agit d'une norme multiplateforme et indépendante du langage qui définit comment accéder aux données et les manipuler dans :

  • HTML
  • XHTML
  • XML

DOM XML est utilisé pour accéder et manipuler des documents XML. Il affiche le document XML sous forme de structure arborescente.

Analyseurs XML

Un analyseur XML est un programme qui traduit le document XML en un objet DOM (Document Object Model) XML.

L'objet DOM XML peut ensuite être manipulé à l'aide de JavaScénario, Python, PHP et d'autres langages.

Le mot-clé CDATA, qui est l'acronyme de (unparsed) Character Data, est utilisé pour ignorer les caractères spéciaux tels que « < » et « > » lors de l'analyse d'un document XML.

Pourquoi utiliser XML ?

  • Les services web tels que SOAP et REST utilisent le format XML pour échanger des informations. Comprendre le fonctionnement et les principes du XML constitue un atout majeur pour les développeurs, car les applications modernes font un usage intensif des services web.
  • Les documents XML peuvent être utilisés pour stocker les paramètres de configuration d'une application.
  • Il vous permet de créer vos propres balises personnalisées, ce qui le rend plus flexible.

Exemple de document XML

Supposons que vous soyez en développementping une application qui récupère des données d'un service web au format XML.

Vous trouverez ci-dessous un exemple de ce à quoi ressemble un document XML.

<?xml version="1.0" encoding="utf-8"?>
<employees status = "ok">
<record man_no = "101">
<name>Joe Paul</name>
<position>CEO</position>
</record>
<record man_no = "102">
<name>Tasha Smith</name>
<position>Finance Manager</position>
</record>
</employees>

ICI,

  • « « spécifie la version XML et l'encodage à utiliser »
  • " " est l'élément racine.
  • « … « » sont les éléments enfants, un par dossier d’employé.

Comment lire XML en utilisant PHP

Écrivons maintenant le code qui lira le document XML des employés et affichera les résultats dans un navigateur web. index.php

<?php
$xml = simplexml_load_file('employees.xml');
echo '<h2>Employees Listing</h2>';
$list = $xml->record;
for ($i = 0; $i < count($list); $i++) {
echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>';
echo 'Name: ' . $list[$i]->name . '<br>';
echo 'Position: ' . $list[$i]->position . '<br><br>';
}
?>

ICI,

  • « $xml = simplexml_load_file('employees.xml'); » utilise la fonction simplexml_load_file pour charger le fichier nommé employees.xml et assigner son contenu à la variable $xml.
  • « $list = $xml->record; » récupère le contenu des nœuds d'enregistrement.
  • « for ($i = 0; $i < count(…)… » est la boucle for qui lit le tableau et affiche les résultats
  • "$list[$i]->attributes()->man_no;" lit l'attribut man_no de l'élément
  • « $list[$i]->nom ; » lit la valeur de l'élément enfant name
  • « $liste[$i]->position ; » lit la valeur de l'élément enfant position

Test du lecteur XML

En supposant que vous ayez enregistré le fichier index.php dans le dossier phptuts/xml, accédez à URL http://localhost/phptuts/xml/index.php

Lire XML avec PHP

Comment créer un document XML en utilisant PHP

Nous allons maintenant voir comment créer un document XML en utilisant PHP.

Le code suivant utilise la classe intégrée DOMDocument de PHP pour créer un document XML.

<?php

$dom = new DOMDocument();

$dom->encoding = 'utf-8';

$dom->xmlVersion = '1.0';

$dom->formatOutput = true;

$xml_file_name = 'movies_list.xml';

$root = $dom->createElement('Movies');

$movie_node = $dom->createElement('movie');

$attr_movie_id = new DOMAttr('movie_id', '5467');

$movie_node->setAttributeNode($attr_movie_id);

$child_node_title = $dom->createElement('Title', 'The Campaign');

$movie_node->appendChild($child_node_title);

$child_node_year = $dom->createElement('Year', 2012);

$movie_node->appendChild($child_node_year);

$child_node_genre = $dom->createElement('Genre', 'Comedy');

$movie_node->appendChild($child_node_genre);

$child_node_ratings = $dom->createElement('Ratings', 6.2);

$movie_node->appendChild($child_node_ratings);

$root->appendChild($movie_node);

$dom->appendChild($root);

$dom->save($xml_file_name);

echo "$xml_file_name has been successfully created";
?>

ICI,

  • « $dom = new DOMDocument(); » crée une instance de la classe DOMDocument.
  • "$dom->encodage = 'utf-8';" définit l'encodage du document sur utf-8
  • "$dom->xmlVersion = '1.0';" spécifie le numéro de version 1.0
  • « $dom->formatOutput = true ; » garantit que la sortie est bien formatée
  • "$root = $dom->createElement('Films');" crée le nœud racine nommé Films
  • « $attr_movie_id = new DOMAttr('movie_id', '5467'); » définit l'attribut movie_id du nœud movie
  • La méthode `$dom->createElement('ElementName', 'ElementValue')` crée un nœud enfant. `ElementName` spécifie le nom de l'élément, par exemple « Titre ». `ElementValue` définit la valeur du nœud enfant, par exemple « La Campagne ».
  • « $root->appendChild($movie_node); » ajoute le nœud « movie » au nœud racine « Movies ».
  • "$dom->appendChild($root);" ajoute le nœud racine au document XML.
  • "$dom->save($xml_file_name);" enregistre le fichier XML dans le répertoire racine du serveur Web.
  • « echo “$xml_file_name a été créé avec succès”; » affiche un message de réussite.

Test du XML Creator

En supposant que vous ayez enregistré le fichier create_movies_list.php dans le dossier phptuts/xml, accédez à URL http://localhost/phptuts/xml/create_movies_list.php

Créer un document XML en utilisant PHP

Ouvrez le fichier movies_list.xml.

Créer un document XML en utilisant PHP

SimpleXML vs DOMDocument

PHP propose deux principales méthodes pour manipuler le XML. SimpleXML est idéal pour la simple lecture de données, tandis que DOMDocument offre un contrôle plus précis pour la création et l'édition avancée de documents. Le tableau ci-dessous les compare.

Aspect SimpleXML Document DOM
Facilité d’utilisation Très simple ; le document se comporte comme des objets imbriqués API plus verbeuse, basée sur les nœuds
Meilleur pour Lecture et correction légère Création de documents et manipulation complexe
Style d'accès $xml->enregistrement->nom créerElement() et ajouterChild()
Prise en charge de XPath Oui, via ->xpath() Oui, via la classe DOMXPath

En pratique, il est conseillé d'utiliser d'abord SimpleXML pour lire les flux et les fichiers simples, puis de passer à DOMDocument lorsque vous devez créer des documents, insérer des nœuds à des positions spécifiques ou effectuer une validation par rapport à un schéma.

FAQ

Les deux formats stockent des données structurées, mais XML utilise des balises et prend en charge les attributs, les commentaires et les schémas, tandis que JSON est plus léger et correspond directement à des tableaux et des objets. JSON est couramment utilisé pour les API ; XML convient mieux aux documents et à la configuration.

Chargez le fichier avec SimpleXML ou DOMDocument, modifiez les valeurs ou les attributs des nœuds, puis réécrivez-le. Avec SimpleXML, modifiez la propriété et appelez asXML('file.xml') ; avec DOMDocument, modifiez le nœud et appelez save().

XPath est un langage de requête permettant de sélectionner des nœuds dans un document XML. En PHP, appelez `$xml->xpath('//record/name')` avec SimpleXML, ou utilisez la classe DOMXPath, pour récupérer les éléments correspondants sans avoir à les lire.ping à travers tout l'arbre.

Oui. L'IA peut générer du code à l'aide de `simplexml_load_string`, `json_encode` et `json_decode` pour convertir entre les formats et signaler les données qui ne se convertissent pas correctement, comme les attributs XML ou le contenu mixte. Vérifiez le résultat.

Oui. Collez un extrait de votre XML, et l'IA générera du code SimpleXML ou DOMDocument qui lira précisément les éléments et attributs dont vous avez besoin, y compris les boucles pour les enregistrements répétés. Testez-le ensuite sur des fichiers réels.

Résumez cet article avec :