Converter xml em matriz associativa em php

Converter xml em matriz associativa em php

XML (linguagem de marcação extensível) é um tipo de linguagem de marcação que é usada para armazenar os dados em um formato legível por humanos. É diferente de outros idiomas de marcação. Cada etiqueta deste idioma é definida pelo usuário. O uso do 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 internas são usadas para converter o conteúdo XML em uma matriz PHP associativa. Os propósitos de diferentes funções são explicados abaixo.

file_get_contents ():

Esta função retorna os dados da string convertendo qualquer dados XML. É preciso qualquer nome de arquivo xml como argumento.

Simpxml_load_string ():

Esta função retorna o objeto XML convertendo os dados da string xml. São necessários dados de string xml como argumento.

Simpxml_load_file ():

Esta função retorna o objeto XML convertendo o conteúdo do arquivo XML. É preciso o nome do arquivo xml como um argumento.

SimpXMLELEMENT ():

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

JSON_ENCODE ():

Ele retorna o objeto JSON convertendo o objeto XML. É preciso a variável de objeto XML como um argumento.

json_decode ():

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

Crie arquivo XML

Você será obrigado a criar um arquivo XML ou definir dados XML no script para saber o caminho para converter dados XML em uma matriz PHP associativa. Crie um arquivo XML chamado cursos.XML com o seguinte conteúdo e armazená -lo no local onde o script PHP está. O arquivo contém elementos filho sob 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



Programação da Web
6 meses


A alegria da programação PHP
Alan Forbes
Ilha da Plum


PHP e MySQL Novice para Ninja
Tom Butler e Kevin Yank
SitePoint


Cabeça primeiro php e mysql
Lynn Beighley e Michael Morrison
O'Reilly


Exemplo 1: Converta 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 objeto XML. Aqui, os cursos.O arquivo XML é usado para conversão que foi criado antes. Em seguida, a função JSON_ENCODE () e JSON_DECODE () são usados ​​para obter a matriz associativa após a conversão do conteúdo do arquivo XML. Se não houver erro no conteúdo XML, nenhum erro será mostrado pelo script a seguir. Aqui,

 A tag é usada para imprimir a matriz de maneira 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);
// Converter dados da string xml em objeto XML
$ xmlobject = simplexml_load_string ($ xmldata);
// converte o objeto XML em objeto JSON
$ jsonObject = JSON_ENCODE ($ xmlobject);
// converte o objeto JSON em uma matriz associativa
$ assarray = json_decode ($ jsonObject, true);
// Imprima a estrutura da matriz associativa
eco "

";
print_r ($ Assarray);
eco "

";
?>

Saída:

A saída a seguir será exibida 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: Converta o conteúdo do arquivo XML em uma matriz associativa com erro de verificação

É melhor verificar o erro ao converter XML em uma matriz associativa. 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 manuseio de erros. A função libxml_use_internal_errors () é usada com valor verdadeiro para ativar o tratamento de erros. Se o conteúdo do arquivo XML usado no script contiver qualquer erro, a função Simplexml_load_file () retornará falsa, 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.

// Ative o manuseio de erros do usuário
libxml_use_internal_errors (true);
// Crie o objeto XML
$ objxml = simplexml_load_file ("Cursos.xml ");
// Erro de impressão se o objeto XML retornar false
if ($ objxml === false)
eco "houve erros analisando o arquivo xml.\ n ";
foreach (libxml_get_errors () como $ error)
eco $ error-> mensagem;

saída;

// converte o objeto XML em objeto JSON
$ objjson = json_encode ($ objxml);
// converte o objeto JSON em uma matriz associativa
$ Assarr = json_decode ($ objjson, true);
// Imprima a estrutura da matriz associativa
eco "
";
print_r ($ Assarr);
eco "
";
?>

Saída:

A saída a seguir será exibida após a execução do script PHP. Aqui, não existe erro no arquivo XML. Portanto, uma matriz bidimensional gerou como o exemplo anterior com base no conteúdo do arquivo XML, cursos.xml.

Exemplo 3: Converta o 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, SimpxMlelement (). Em seguida, a função JSON_ENCODE () e JSON_DECODE () são usados ​​para obter a matriz associativa após a conversão do conteúdo do arquivo XML.

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


[email protected]

12/a, dhanmondi
Dhaka



[email protected]

156, Motijeel
Dhaka



[email protected]

21/B, Mogbazar
Dhaka



Xml;
// Crie o objeto XML
$ xmlObject = new SimpXMLELEMENT ($ XML);
// Crie objeto JSON
$ jsonObject = JSON_ENCODE ($ xmlobject);
// converte o objeto JSON em uma matriz associativa
$ assarray = json_decode ($ jsonObject, true);
// Imprima a estrutura da matriz associativa
eco "
";
print_r ($ Assarray);
eco "
";
?>

Saída:

A saída a seguir será exibida 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 o conteúdo XML em uma matriz associativa que foi mostrada neste tutorial. Isso ajudará os leitores a saber o caminho para trabalhar com dados XML e analisar os dados do conteúdo XML usando um script PHP facilmente.