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