Convertir XML en JSON en PHP

Minahil Noor 25 février 2021
Convertir XML en JSON en PHP

Cet article présente une méthode pour convertir une chaîne XML en JSON en PHP.

Utilisez la fonction simplexml_load_string() et json_encode() pour convertir une chaîne XML en JSON en PHP

Nous utiliserons deux fonctions pour convertir une chaîne XML en JSON en PHP, car il n’existe pas de fonction spécialisée pour la conversion directe. Ces deux fonctions sont simplexml_load_string() et json_encode(). La syntaxe correcte pour utiliser ces fonctions pour la conversion d’une chaîne XML en JSON est la suivante.

simplexml_load_string($data, $class_name, $options, $ns, $is_prefix);

La fonction simplexml_load_string() accepte cinq paramètres. Les détails de ses paramètres sont les suivants.

Variables Description
$data obligatoire Une chaîne XML bien formée.
$class_name facultatif Nous utilisons ce paramètre optionnel pour que simplexml_load_string() renvoie un objet de la classe spécifiée. Cette classe devrait étendre la classe SimpleXMLElement.
options facultatif Nous pouvons également utiliser le paramètre options pour spécifier des paramètres Libxml supplémentaires.
ns facultatif Le préfixe de l’espace de noms ou URI.
$is_prefix facultatif Mettre à true si $ns est un préfixe, false si c’est un URI. Sa valeur par défaut est false.

Cette fonction renvoie l’objet de la classe SimpleXMLElement contenant les données contenues dans la chaîne XML, ou False en cas d’échec.

json_encode($value, $flags, $depth);

La fonction json_encode() a trois paramètres. Les détails de ses paramètres sont les suivants.

Variables Description
$value obligatoire La valeur étant encodée.
$flags facultatif Un masque binaire composé de JSON_FORCE_OBJECT, JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_NUMERIC_CHECK, JSON_PARTIAL_OUTPUT_ON_ERROR, JSON_PRESERVE_ZERO_FRACTION, JSON_PRETTY_PRINT, JSON_UNESCAPED_LINE_TERMINATORS, JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE, JSON_THROW_ON_ERROR.
$depth facultatif La profondeur maximale. Elle doit être supérieure à zéro.

Cette fonction renvoie la valeur JSON. Le programme ci-dessous montre comment nous pouvons utiliser la fonction simplexml_load_string() et json_encode() pour convertir une chaîne XML en JSON en PHP.

<?php   
$xml_string =  <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#211;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It is like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>
XML;
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml); // convert the XML string to JSON
var_dump($json);
?>

Production :

string(415) "{"movie":{"title":"PHP: Behind the Parser","characters":{"character":[{"name":"Ms. Coder","actor":"Onlivia Actora"},{"name":"Mr. Coder","actor":"El Act\u00d3r"}]},"plot":"\n   So, this language. It is like, a programming language. Or is it a\n   scripting language? All is revealed in this thrilling horror spoof\n   of a documentary.\n  ","great-lines":{"line":"PHP solves all my web problems"},"rating":["7","5"]}}"

Article connexe - PHP XML

Article connexe - PHP JSON