W3docs

simplexml_load_string()

SimpleXML est une extension PHP qui fournit une API simple pour travailler avec des documents XML. La fonction simplexml_load_string() charge un XML depuis une chaîne.

Introduction

SimpleXML est une extension PHP qui fournit une API simple et facile à utiliser pour travailler avec des documents XML. La fonction simplexml_load_string() est l'une des nombreuses fonctions que SimpleXML propose pour travailler avec des documents XML. C'est un outil puissant qui permet de charger un document XML à partir d'une chaîne et de créer un objet SimpleXMLElement. Dans cet article, nous allons examiner en détail la fonction simplexml_load_string() et la façon dont elle peut être utilisée en PHP.

Comprendre la fonction simplexml_load_string()

La fonction simplexml_load_string() en PHP charge un document XML à partir d'une chaîne et crée un objet SimpleXMLElement. (Remarque : il s'agit de l'approche procédurale ; l'équivalent orienté objet est new SimpleXMLElement($string).) La syntaxe d'utilisation de la fonction simplexml_load_string() est la suivante :

Syntaxe

simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] ) : SimpleXMLElement

Ici, $data est la chaîne contenant le document XML à charger. $class_name est un paramètre facultatif qui spécifie le nom de la classe à utiliser pour l'objet SimpleXMLElement. $options est un paramètre facultatif qui spécifie des options supplémentaires pour le chargement du document XML. $ns est un paramètre facultatif qui spécifie l'espace de noms à utiliser pour le document XML. $is_prefix est un paramètre facultatif qui spécifie si l'espace de noms est un préfixe.

Exemple d'utilisation

Examinons un exemple pour comprendre l'utilisation de la fonction simplexml_load_string() en PHP :

Exemple d'utilisation de la fonction simplexml_load_string() en PHP

php— editable, runs on the server

Dans l'exemple ci-dessus, nous créons d'abord une chaîne contenant un document XML. Nous utilisons ensuite la fonction simplexml_load_string() pour charger le document XML depuis la chaîne et créer un objet SimpleXMLElement. Nous utilisons une boucle foreach pour itérer sur chaque élément book du document XML et afficher le titre de chaque livre.

Si votre XML provient d'un fichier ou d'une URL plutôt que d'une chaîne, utilisez simplexml_load_file() à la place.

Lecture des attributs

Les attributs XML sont accessibles avec la syntaxe de type tableau ($element['attrName']), tandis que les éléments enfants utilisent la syntaxe de propriété ($element->child). C'est le piège le plus courant pour les débutants :

<?php

$xmlString = '<books><book id="1"><title>PHP Basics</title></book></books>';
$xml = simplexml_load_string($xmlString);

foreach ($xml->book as $book) {
  echo "ID: " . $book['id'] . " - Title: " . $book->title . "\n";
}

Ceci affiche ID: 1 - Title: PHP Basics. Notez que les valeurs d'attributs sont elles-mêmes des objets SimpleXMLElement, il faut donc les transtyper avec (string) ou (int) si vous avez besoin d'un scalaire simple.

Utilisation du paramètre options

Le troisième paramètre accepte des constantes d'options libxml qui modifient la façon dont le document est analysé. L'une des plus utilisées est LIBXML_NOCDATA, qui fusionne les sections CDATA en nœuds de texte brut pour que vous puissiez les lire comme du contenu ordinaire :

<?php

$xmlString = '<note><body><![CDATA[Hello <b>world</b>]]></body></note>';
$xml = simplexml_load_string($xmlString, "SimpleXMLElement", LIBXML_NOCDATA);

echo (string) $xml->body . "\n";

Sans LIBXML_NOCDATA, $xml->body serait vide lors de l'accès en tant que chaîne car le contenu se trouve dans un nœud CDATA.

Gestion des erreurs

Par défaut, simplexml_load_string() émet des avertissements si le XML est mal formé. Pour gérer les erreurs de manière élégante, vous pouvez utiliser libxml_use_internal_errors() :

<?php

$xmlString = '<books><book><title>PHP Basics</title></books>'; // Missing closing </book> tag
libxml_use_internal_errors(true);
$xml = simplexml_load_string($xmlString);

if ($xml === false) {
  foreach (libxml_get_errors() as $error) {
    echo "Error: ", trim($error->message), "\n";
  }
} else {
  foreach($xml->book as $book) {
    echo $book->title . "\n";
  }
}

Lorsque le XML est invalide, simplexml_load_string() retourne false plutôt que de lancer une exception. Appeler libxml_use_internal_errors(true) supprime les avertissements par défaut et vous permet d'inspecter les erreurs collectées avec libxml_get_errors(). Vérifiez toujours la valeur false avant d'utiliser le résultat.

Conclusion

simplexml_load_string() analyse une chaîne XML en un objet SimpleXMLElement, vous donnant un accès de type objet aux éléments enfants ($xml->child) et un accès de type tableau aux attributs ($xml['attr']). Utilisez-la lorsque le XML est déjà en mémoire ; utilisez simplexml_load_file() lorsqu'il se trouve dans un fichier ou une URL. Pour un code robuste, activez les erreurs libxml internes et vérifiez la valeur de retour avant de lire le résultat. Pour approfondir l'API SimpleXML, consultez la vue d'ensemble de SimpleXML.

Pratique

Pratique
Que fait la fonction 'simplexml_load_string' en PHP selon https://www.w3docs.com/learn-php/simplexml-load-string.html ?
Que fait la fonction 'simplexml_load_string' en PHP selon https://www.w3docs.com/learn-php/simplexml-load-string.html ?
Was this page helpful?