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