Konverter XML til Associative Array i PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) er en type markeringssprog, der bruges til at gemme dataene i et format, der kan læses af mennesker. Det adskiller sig fra andre markup -sprog. Hvert mærke på dette sprog er brugerdefineret. Brug af XML er den bedre løsning til at gemme en lille mængde data, når du ikke vil bruge nogen database til lagring af data. Dataene fra XML -dokumentet kan let tilgås og bruges i enhver webapplikation ved hjælp af et PHP -script. Hvordan XML -dokumentet kan parses og gemmes i et associeret array, vises i denne vejledning.

Nødvendige funktioner

Nogle indbyggede funktioner bruges til at konvertere XML-indholdet til et associativt PHP-array. Formålet med forskellige funktioner forklares nedenfor.







file_get_contents ():



Denne funktion returnerer strengdataene ved at konvertere alle XML -data. Det tager ethvert XML -filnavn som et argument.



simplexml_load_string ():





Denne funktion returnerer XML -objektet ved at konvertere XML -strengdataene. Det tager XML -strengdata som et argument.

simplexml_load_file ():



Denne funktion returnerer XML -objektet ved at konvertere XML -filindhold. Det tager XML -filnavnet som et argument.

SimpleXMLElement ():

Det bruges til at oprette et XML -objekt ud fra XML -data. Det tager XML -indholdsværdien som et argument.

json_encode ():

Det returnerer JSON -objektet ved at konvertere XML -objektet. Det tager XML -objektvariablen som et argument.

json_decode ():

Det returnerer det associative PHP -array ved at konvertere JSON -data. Det tager JSON -objektvariablen som et argument.

Opret XML -fil

Du bliver nødt til at oprette en XML -fil eller definere XML -data i scriptet for at kende måden at konvertere XML -data til et associativt PHP -array. Opret en XML -fil med navnet courses.xml med følgende indhold, og gem den på det sted, hvor PHP -scriptet er. Filen indeholder underordnede elementer under et overordnet element. Så et todimensionalt associativt array genereres efter konvertering af følgende XML-fil til et PHP-array.

kurser. xml

version='1.0'?>
>
>Webprogrammering>
>6 måneder>
>
>
>Glæden ved PHP -programmering>
>Alan Forbes>
>Blommeø>
>
>
>PHP& MySQL Novice til Ninja
Tom Butler og Kevin Yank
SitePoint


Hoved først PHP & MySQL
Lynn Beighley og Michael Morrison
O'Reilly


Eksempel-1: Konverter XML-filindhold til et associativt array uden at kontrollere fejl

Følgende script viser anvendelser af funktionerne file_get_contents () og simplexml_load_string () til at oprette XML -objekt. Her bruges kursen.xml -filen til konvertering, der blev oprettet før. Dernæst bruges json_encode () og json_decode () -funktionen til at hente det associative array efter konvertering af XML -filindholdet. Hvis der ikke findes en fejl i XML -indholdet, vises der ingen fejl ved følgende script. Her, | _+_ | tag bruges til at udskrive arrayet på en formateret måde.



// Definer den eksisterende XML -fil
$ xml = 'kurser.xml';

// Læs hele indholdet af XML -filen som XML -streng
$ xmlData = file_get_contents ($ xml);

// Konverter XML -strengdata til XML -objekt
$ xmlObject = simplexml_load_string ($ xmlData);

// Konverter XML -objekt til JSON -objekt
$ jsonObject = json_encode ($ xmlObject);

// Konverter JSON -objekt til et associativt array
$ assArray = json_decode ($ jsonObject, sand);

// Udskriv strukturen i det associative array
smed ud '
  
';

?>

Produktion:

Følgende output vises efter udførelse af PHP -scriptet. Her genereres et todimensionalt array baseret på indholdet i XML-filen, courses.xml.

Eksempel-2: Konverter XML-filindhold til et associeret array med kontrolfejl

Det er bedre at kontrollere fejl, når XML konverteres til et associeret array. Det vil hjælpe koderen med at fejlsøge koden, hvis fejlkontrollen er implementeret i scriptet. Det følgende script viser måderne til at konvertere XML -filindhold til et associeret array ved hjælp af simplexml_load_file () -funktion med fejlhåndtering. Funktionen libxml_use_internal_errors () bruges med SAND værdi for at aktivere fejlhåndteringen. Hvis XML -filindholdet, der bruges i scriptet, indeholder en fejl, returnerer funktionen simplexml_load_file () falsk, og fejlmeddelelsen udskrives ved hjælp af libxml_get_errors () -funktionen. Hvis der ikke findes en fejl i XML-filen, konverteres filens indhold korrekt til et todimensionalt associativt array.



// Aktiver håndtering af brugerfejl
libxml_use_internal_errors (SAND);

// Opret XML -objekt
$ objXml = simplexml_load_file ('kurser.xml');

// Udskrivningsfejl, hvis XML -objektet returnerer falsk
hvis ($ objXml === FALSK) {
smed ud 'Der opstod fejl ved analyse af XML -filen. n';
for hver( libxml_get_errors () som $ fejl) {
smed ud $ fejl->besked;
}
Afslut ;
}

// Konverter XML -objekt til JSON -objekt
$ objJson = json_encode ($ objXml);
// Konverter JSON -objekt til et associativt array
$ assarr = json_decode ($ objJson, SAND);

// Udskriv strukturen i det associative array
smed ud '
';  
print_r ($assArray);
echo '
'
;

?>

Produktion:

Følgende output vises efter udførelse af PHP -scriptet. Her findes der ingen fejl i XML -filen. Så et todimensionalt array har genereret som det foregående eksempel baseret på indholdet af XML-filen, courses.xml.

Eksempel-3: Konverter XML-indhold til et associativt array

Det følgende script viser, hvordan man konverterer XML -data til et associeret array ved hjælp af funktionen SimpleXMLElement (). I scriptet gemmes XML -indholdet i en variabel med navnet $ xml, der bruges som argumentet for funktionen, SimpleXMLElement (). Dernæst bruges json_encode () og json_decode () -funktionen til at hente det associative array efter konvertering af XML -filindholdet.



// Definer XML -variablen
$ xml = <<


[e -mail beskyttet]

12 / A, Dhanmondi
Dhaka



[e -mail beskyttet]

156, Motiv
Dhaka



[e -mail beskyttet]

21 / B, Mogbazar
Dhaka



XML
;

// Opret XML -objekt
$ xmlObject = nySimpleXMLElement($ xml);
// Opret JSON -objekt
$ jsonObject = json_encode ($ xmlObject);
// Konverter JSON -objekt til et associativt array
$ assArray = json_decode ($ jsonObject, sand);

// Udskriv strukturen i det associative array
smed ud '
';  
print_r ($assarr);
echo '
'
;

?>

Produktion:

Følgende output vises efter udførelse af PHP -scriptet. Her genereres et todimensionalt array baseret på indholdet af XML-variablen, $ xml.

Konklusion:

Der var tre forskellige måder at konvertere XML -indhold til et associativt array, der blev vist i denne vejledning. Dette vil hjælpe læserne til at kende måden at arbejde med XML -data på og let analysere dataene fra XML -indholdet ved let at bruge et PHP -script.