Converti XML in array associativo in PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) è un tipo di linguaggio di markup utilizzato per archiviare i dati in un formato leggibile. È diverso dagli altri linguaggi di markup. Ogni tag di questa lingua è definito dall'utente. L'utilizzo di XML è la soluzione migliore per archiviare una piccola quantità di dati quando non si desidera utilizzare alcun database per l'archiviazione dei dati. È possibile accedere facilmente ai dati del documento XML e utilizzarli in qualsiasi applicazione Web utilizzando uno script PHP. In questo tutorial viene mostrato come il documento XML può essere analizzato e archiviato in un array associativo.

Funzioni necessarie

Alcune funzioni integrate vengono utilizzate per convertire il contenuto XML in un array PHP associativo. Gli scopi delle diverse funzioni sono spiegati di seguito.







file_get_contents():



Questa funzione restituisce i dati della stringa convertendo qualsiasi dato XML. Prende come argomento qualsiasi nome di file XML.



simplexml_load_string():





Questa funzione restituisce l'oggetto XML convertendo i dati della stringa XML. Prende i dati della stringa XML come argomento.

simplexml_load_file():



Questa funzione restituisce l'oggetto XML convertendo il contenuto del file XML. Prende come argomento il nome del file XML.

SimpleXMLElement ():

Viene utilizzato per creare un oggetto XML da dati XML. Prende come argomento il valore del contenuto XML.

json_encode():

Restituisce l'oggetto JSON convertendo l'oggetto XML. Prende la variabile oggetto XML come argomento.

json_decode():

Restituisce l'array PHP associativo convertendo i dati JSON. Prende la variabile oggetto JSON come argomento.

Crea file XML

Ti verrà richiesto di creare un file XML o definire dati XML nello script per conoscere il modo in cui convertire i dati XML in un array PHP associativo. Crea un file XML denominato course.xml con il seguente contenuto e salvalo nella posizione in cui si trova lo script PHP. Il file contiene elementi figlio sotto un elemento padre. Quindi, un array associativo bidimensionale verrà generato dopo aver convertito il seguente file XML in un array PHP.

corsi.xml

versione='1.0'?>
>
>Programmazione Web>
>6 mesi>
>
>
>La gioia della programmazione PHP>
>Alan Forbes>
>Plum Island>
>
>
>PHP& MySQL da principiante a Ninja
Tom Butler e Kevin Yank
SitePoint


Testa prima PHP e MySQL
Lynn Beighley e Michael Morrison
O'Reilly


Esempio 1: convertire il contenuto del file XML in un array associativo senza controllare l'errore

Il seguente script mostra gli usi delle funzioni file_get_contents() e simplexml_load_string() per creare oggetti XML. Qui, il file course.xml viene utilizzato per la conversione che è stata creata in precedenza. Successivamente, le funzioni json_encode() e json_decode() vengono utilizzate per ottenere l'array associativo dopo aver convertito il contenuto del file XML. Se non sono presenti errori nel contenuto XML, nessun errore verrà mostrato dal seguente script. Qui, |_+_| tag viene utilizzato per stampare l'array in modo formattato.



//Definisci il file XML esistente
$xml = 'corsi.xml';

//Leggi l'intero contenuto del file XML come stringa XML
$xmlData = file_get_contents ($xml);

//Converti i dati della stringa XML in un oggetto XML
$xmlObject = simplexml_load_string ($xmlData);

//Converti oggetto XML in oggetto JSON
$jsonObject = json_encode ($xmlObject);

//Converti l'oggetto JSON in un array associativo
$assArray = json_decode ($jsonObject, vero);

//Stampa la struttura dell'array associativo
buttato fuori '
  
';

?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script PHP. Qui viene generato un array bidimensionale basato sul contenuto del file XML, course.xml.

Esempio 2: convertire il contenuto del file XML in un array associativo con controllo dell'errore

È meglio controllare l'errore durante la conversione di XML in un array associativo. Aiuterà il programmatore a eseguire il debug del codice se il controllo degli errori è implementato nello script. Lo script seguente mostra i modi per convertire il contenuto del file XML in un array associativo utilizzando la funzione simplexml_load_file() con la gestione degli errori. La funzione libxml_use_internal_errors() viene utilizzata con il valore TRUE per abilitare la gestione degli errori. Se il contenuto del file XML utilizzato nello script contiene errori, la funzione simplexml_load_file() restituirà false e il messaggio di errore verrà stampato utilizzando la funzione libxml_get_errors(). Se non sono presenti errori nel file XML, il contenuto del file verrà convertito correttamente in un array associativo bidimensionale.



//Abilita la gestione degli errori dell'utente
libxml_use_internal_errors (VERO);

//Crea oggetto XML
$ objXml = simplexml_load_file ('corsi.xml');

//Errore di stampa se l'oggetto XML restituisce false
Se ($ objXml === FALSO) {
buttato fuori 'Si sono verificati errori durante l'analisi del file XML. ';
per ciascuno( libxml_get_errors () come $ errore) {
buttato fuori $ errore->Messaggio;
}
Uscita ;
}

//Converti oggetto XML in oggetto JSON
$ objJson = json_encode ($ objXml);
//Converti l'oggetto JSON in un array associativo
$assar = json_decode ($ objJson, VERO);

//Stampa la struttura dell'array associativo
buttato fuori '
';  
print_r ($assArray);
echo '
'
;

?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script PHP. Qui non esiste alcun errore nel file XML. Quindi, è stato generato un array bidimensionale come l'esempio precedente basato sul contenuto del file XML, course.xml.

Esempio 3: convertire il contenuto XML in un array associativo

Lo script seguente mostra il modo di convertire i dati XML in un array associativo utilizzando la funzione SimpleXMLElement(). Nello script, il contenuto XML è memorizzato in una variabile denominata $xml che viene utilizzata come argomento della funzione, SimpleXMLElement(). Successivamente, le funzioni json_encode() e json_decode() vengono utilizzate per ottenere l'array associativo dopo aver convertito il contenuto del file XML.



//Definisci la variabile XML
$xml = <<


[e-mail protetta]

12/A, Dhanmondi
Dacca



[e-mail protetta]

156, Motivo
Dacca



[e-mail protetta]

21/B, Mogbazar
Dacca



XML
;

//Crea oggetto XML
$xmlObject = nuovoSimpleXMLElement($xml);
//Crea oggetto JSON
$jsonObject = json_encode ($xmlObject);
//Converti l'oggetto JSON in un array associativo
$assArray = json_decode ($jsonObject, vero);

//Stampa la struttura dell'array associativo
buttato fuori '
';  
print_r ($assarr);
echo '
'
;

?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script PHP. Qui viene generato un array bidimensionale basato sul contenuto della variabile XML, $xml.

Conclusione:

C'erano tre modi diversi per convertire il contenuto XML in un array associativo che è stato mostrato in questo tutorial. Ciò aiuterà i lettori a conoscere il modo di lavorare con i dati XML e ad analizzare i dati dal contenuto XML utilizzando facilmente uno script PHP.