Converter XML para JSON em PHP

Minahil Noor 25 fevereiro 2021
Converter XML para JSON em PHP

Este artigo introduzir um método para converter uma string XML para JSON em PHP.

Utilize as funções simplexml_load_string() e json_encode() para converter uma string XML para JSON em PHP

Vamos utilizar duas funções para converter uma string XML para JSON em PHP porque não há nenhuma função especializada para conversão directa. Estas duas funções são simplexml_load_string() e json_encode(). A sintaxe correcta para utilizar estas funções para a conversão de uma string XML para JSON é a seguinte.

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

A função simplexml_load_string() aceita cinco parâmetros. Os detalhes dos seus parâmetros são os seguintes.

Variáveis Descrição
$data obrigatório Uma string de XML bem formada.
$class_name opcional Utilizamos este parâmetro opcional para que o simplexml_load_string() devolva um objecto da classe especificada. Esta classe deve estender a classe SimpleXMLElement.
options opcional Podemos também utilizar o parâmetro options para especificar parâmetros Libxml adicionais.
ns opcional O namespace prefixo ou URI.
$is_prefix opcional Definir para true se $ns for um prefixo, false se for um URI. O seu valor por defeito false.

Esta função retorna o objecto da classe SimpleXMLElement contendo os dados mantidos dentro da string XML, ou False em caso de falha.

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

A função json_encode() tem três parâmetros. Os detalhes dos seus parâmetros são os seguintes.

Variáveis Descrição
$value obrigatório O valor a ser codificado.
$flags opcional Uma máscara de bits constituída por 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 A profundidade máxima. Deve ser maior que zero.

Esta função retorna o valor JSON. O programa abaixo mostra as formas pelas quais podemos utilizar a função simplexml_load_string() e json_encode() para converter uma string XML para JSON em 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);
?>

Resultado:

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

Artigo relacionado - PHP JSON