Convertir XML a JSON en PHP

Minahil Noor 11 marzo 2021
Convertir XML a JSON en PHP

Este artículo introducirá un método para convertir una cadena XML a JSON en PHP.

Utiliza la función simplexml_load_string() y json_encode() para convertir una cadena XML a JSON en PHP

Utilizaremos dos funciones para convertir una cadena de XML a JSON en PHP porque no hay una función especializada para la conversión directa. Estas dos funciones son simplexml_load_string() y json_encode(). La sintaxis correcta para usar estas funciones para la conversión de una cadena XML a JSON es la siguiente.

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

La función simplexml_load_string() acepta cinco parámetros. Los detalles de sus parámetros son los siguientes.

Variables Descripción
$data obligatorio Una cadena XML bien formada.
$class_name opcional Utilizamos este parámetro opcional para que simplexml_load_string() devuelva un objeto de la clase especificada. Esa clase debería extender la clase SimpleXMLElement.
options opcional También podemos usar el parámetro options para especificar parámetros adicionales de Libxml.
ns opcional El prefijo del espacio de nombres o URI.
$is_prefix opcional Ponlo en true si $ns es un prefijo, false si es una URI. Su valor por defecto es false.

Esta función devuelve el objeto de la clase SimpleXMLElement que contiene los datos contenidos en la cadena XML, o False en caso de fallo.

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

La función json_encode() tiene tres parámetros. Los detalles de sus parámetros son los siguientes.

Variables Descripción
$value obligatorio El valor que se está codificando.
$flags opcional Una máscara de bits que consiste en 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 opcional La profundidad máxima. Debería ser mayor que cero.

Esta función devuelve el valor JSON. El programa a continuación muestra las formas en que podemos usar la función simplexml_load_string() y json_encode() para convertir una cadena XML a 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);
?>

Producción :

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"]}}"

Artículo relacionado - PHP XML

Artículo relacionado - PHP JSON