Converter XML em matriz associativa em PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) é um tipo de linguagem de marcação usado para armazenar os dados em um formato legível. É diferente de outras linguagens de marcação. Cada tag deste idioma é definida pelo usuário. Usar XML é a melhor solução para armazenar uma pequena quantidade de dados quando você não deseja usar nenhum banco de dados para armazenar dados. Os dados do documento XML podem ser facilmente acessados ​​e usados ​​em qualquer aplicativo da web usando um script PHP. Como o documento XML pode ser analisado e armazenado em uma matriz associativa é mostrado neste tutorial.

Funções Necessárias

Algumas funções integradas são usadas para converter o conteúdo XML em uma matriz associativa de PHP. Os objetivos das diferentes funções são explicados a seguir.







file_get_contents ():



Esta função retorna os dados da string convertendo quaisquer dados XML. Aceita qualquer nome de arquivo XML como argumento.



simplexml_load_string ():





Esta função retorna o objeto XML convertendo os dados da string XML. Leva dados de string XML como argumento.

simplexml_load_file ():



Esta função retorna o objeto XML convertendo o conteúdo do arquivo XML. Leva o nome do arquivo XML como argumento.

SimpleXMLElement ():

É usado para criar um objeto XML a partir de dados XML. Leva o valor do conteúdo XML como um argumento.

json_encode ():

Ele retorna o objeto JSON convertendo o objeto XML. Leva a variável do objeto XML como um argumento.

json_decode ():

Ele retorna a matriz associativa de PHP convertendo dados JSON. Leva a variável de objeto JSON como um argumento.

Criar arquivo XML

Você precisará criar um arquivo XML ou definir dados XML no script para saber como converter dados XML em uma matriz associativa de PHP. Crie um arquivo XML denominado cursos.xml com o seguinte conteúdo e armazene-o no local onde está o script PHP. O arquivo contém elementos filhos em um elemento pai. Portanto, uma matriz associativa bidimensional será gerada após a conversão do seguinte arquivo XML em uma matriz PHP.

cursos.xml

versão='1.0'?>
>
>Programação da Web>
>6 meses>
>
>
>A alegria da programação PHP>
>Alan Forbes>
>Plum Island>
>
>
>PHP& MySQL Novice to Ninja
Tom Butler e Kevin Yank
SitePoint


Use primeiro PHP e MySQL
Lynn Beighley e Michael Morrison
O’Reilly


Exemplo-1: converter o conteúdo do arquivo XML em uma matriz associativa sem verificar o erro

O script a seguir mostra os usos das funções file_get_contents () e simplexml_load_string () para criar objetos XML. Aqui, o arquivoourses.xml é usado para a conversão que foi criada anteriormente. Em seguida, as funções json_encode () e json_decode () são usadas para obter a matriz associativa após a conversão do conteúdo do arquivo XML. Se nenhum erro existir no conteúdo XML, nenhum erro será mostrado pelo script a seguir. Aqui,

  tag é usada para imprimir o array de forma formatada.



// Defina o arquivo XML existente
$ xml = 'cursos.xml';

// Leia o conteúdo completo do arquivo XML como string XML
$ xmlData = file_get_contents ($ xml);

// Converte dados de string XML em objeto XML
$ xmlObject = simplexml_load_string ($ xmlData);

// Converter objeto XML em objeto JSON
$ jsonObject = json_encode ($ xmlObject);

// Converta o objeto JSON em uma matriz associativa
$ assArray = json_decode ($ jsonObject, verdade);

// Imprime a estrutura do array associativo
jogou fora '

';  
print_r ($assArray);
echo '

'
;

?>

Saída:

A seguinte saída aparecerá após a execução do script PHP. Aqui, uma matriz bidimensional é gerada com base no conteúdo do arquivo XML, cursos.xml.

Exemplo-2: converter o conteúdo do arquivo XML em uma matriz associativa com verificação de erro

É melhor verificar o erro ao converter XML em uma matriz associativa. Isso ajudará o codificador a depurar o código se a verificação de erros for implementada no script. O script a seguir mostra as maneiras de converter o conteúdo do arquivo XML em uma matriz associativa usando a função simplexml_load_file () com tratamento de erros. A função libxml_use_internal_errors () é usada com o valor TRUE para habilitar o tratamento de erros. Se o conteúdo do arquivo XML usado no script contiver algum erro, a função simplexml_load_file () retornará falso e a mensagem de erro será impressa usando a função libxml_get_errors (). Se não houver erro no arquivo XML, o conteúdo do arquivo será convertido corretamente em uma matriz associativa bidimensional.



// Habilita o tratamento de erros do usuário
libxml_use_internal_errors (VERDADE);

// Criar objeto XML
$ objXml = simplexml_load_file ('cursos.xml');

// Imprime erro se o objeto XML retornar falso
E se ($ objXml === FALSO) {
jogou fora 'Houve erros ao analisar o arquivo XML. n';
para cada( libxml_get_errors () Como $ erro) {
jogou fora $ erro->mensagem;
}
saída ;
}

// Converter objeto XML em objeto JSON
$ objJson = json_encode ($ objXml);
// Converta o objeto JSON em uma matriz associativa
$ assarr = json_decode ($ objJson, VERDADE);

// Imprime a estrutura do array associativo
jogou fora '
';  
print_r ($assarr);
echo '
'
;

?>

Saída:

A seguinte saída aparecerá após a execução do script PHP. Aqui, nenhum erro existe no arquivo XML. Portanto, uma matriz bidimensional foi gerada como o exemplo anterior com base no conteúdo do arquivo XML, cursos.xml.

Exemplo-3: converter conteúdo XML em uma matriz associativa

O script a seguir mostra a maneira de converter dados XML em uma matriz associativa usando a função SimpleXMLElement (). No script, o conteúdo XML é armazenado em uma variável chamada $ xml que é usada como argumento da função, SimpleXMLElement (). Em seguida, as funções json_encode () e json_decode () são usadas para obter a matriz associativa após a conversão do conteúdo do arquivo XML.



// Defina a variável XML
$ xml = <<


[email protegido]

12 / A, Dhanmondi
Dhaka



[email protegido]

156, Motif
Dhaka



[email protegido]

21 / B, Mogbazar
Dhaka



XML
;

// Criar objeto XML
$ xmlObject = novoSimpleXMLElement($ xml);
// Criar objeto JSON
$ jsonObject = json_encode ($ xmlObject);
// Converta o objeto JSON em uma matriz associativa
$ assArray = json_decode ($ jsonObject, verdade);

// Imprime a estrutura do array associativo
jogou fora '
';  
print_r ($assArray);
echo '
'
;

?>

Saída:

A seguinte saída aparecerá após a execução do script PHP. Aqui, uma matriz bidimensional é gerada com base no conteúdo da variável XML, $ xml.

Conclusão:

Havia três maneiras diferentes de converter conteúdo XML em uma matriz associativa que foi mostrada neste tutorial. Isso ajudará os leitores a saber como trabalhar com dados XML e analisar os dados do conteúdo XML usando um script PHP facilmente.