Konverter XML til Associative Array i PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) er en type markeringsspråk som brukes til å lagre dataene i et lesbart format for mennesker. Det er forskjellig fra andre markeringsspråk. Hver kode på dette språket er brukerdefinert. Å bruke XML er den bedre løsningen for å lagre en liten mengde data når du ikke vil bruke noen database for å lagre data. Dataene fra XML -dokumentet kan lett nås og brukes i alle webapplikasjoner ved hjelp av et PHP -skript. Hvordan XML -dokumentet kan analyseres og lagres i en assosiativ matrise, er vist i denne opplæringen.

Nødvendige funksjoner

Noen innebygde funksjoner brukes til å konvertere XML-innholdet til en assosiativ PHP-matrise. Formålet med de forskjellige funksjonene er forklart nedenfor.







file_get_contents ():



Denne funksjonen returnerer strengdataene ved å konvertere XML -data. Det tar et hvilket som helst XML -filnavn som et argument.



simplexml_load_string ():





Denne funksjonen returnerer XML -objektet ved å konvertere XML -strengdataene. Det tar XML -strengdata som et argument.

simplexml_load_file ():



Denne funksjonen returnerer XML -objektet ved å konvertere XML -filinnhold. Det tar XML -filnavnet som et argument.

SimpleXMLElement ():

Den brukes til å lage et XML -objekt fra XML -data. Det tar XML -innholdsverdien som et argument.

json_encode ():

Det returnerer JSON -objektet ved å konvertere XML -objektet. Den tar XML -objektvariabelen som et argument.

json_decode ():

Det returnerer det assosiative PHP -arrayet ved å konvertere JSON -data. Den tar JSON -objektvariabelen som et argument.

Lag XML -fil

Du må opprette en XML -fil eller definere XML -data i skriptet for å vite hvordan du konverterer XML -data til en assosiativ PHP -matrise. Lag en XML -fil som heter courses.xml med følgende innhold og lagre den på stedet der PHP -skriptet er. Filen inneholder underordnede elementer under et overordnet element. Så vil en todimensjonal assosiativ matrise generere etter konvertering av følgende XML-fil til en PHP-matrise.

kurs. xml

versjon='1.0'?>
>
>Webprogrammering>
>6 måneder>
>
>
>Gleden ved PHP -programmering>
>Alan Forbes>
>Plommeøya>
>
>
>PHP& MySQL Nybegynner til Ninja
Tom Butler og Kevin Yank
SitePoint


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


Eksempel-1: Konverter XML-filinnhold til en assosiativ matrise uten å sjekke feil

Følgende skript viser bruken av funksjonene file_get_contents () og simplexml_load_string () for å lage XML -objekt. Her brukes cursus.xml -filen for konvertering som ble opprettet før. Deretter brukes json_encode () og json_decode () -funksjonen for å hente det assosiative arrayet etter å ha konvertert XML -filinnholdet. Hvis det ikke finnes noen feil i XML -innholdet, vises ingen feil med følgende skript. Her, | _+_ | tag brukes til å skrive ut matrisen på en formatert måte.



// Definer den eksisterende XML -filen
$ xml = 'courses.xml';

// Les hele innholdet i 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 en assosiativ matrise
$ assArray = json_decode ($ jsonObject, ekte);

// Skriv ut strukturen til det assosiative matrisen
kastet ut '
  
';

?>

Produksjon:

Følgende utdata vises etter kjøring av PHP -skriptet. Her genereres en todimensjonal matrise basert på innholdet i XML-filen, courses.xml.

Eksempel-2: Konverter XML-filinnhold til en assosiativ matrise med kontrollfeil

Det er bedre å sjekke feilen når du konverterer XML til en assosiativ matrise. Det vil hjelpe koderen med å feilsøke koden hvis feilkontrollen er implementert i skriptet. Følgende skript viser måter å konvertere XML -filinnhold til en assosiativ matrise ved å bruke simplexml_load_file () -funksjonen med feilhåndtering. Libxml_use_internal_errors () -funksjonen brukes med TRUE -verdi for å aktivere feilhåndteringen. Hvis XML -filinnholdet som brukes i skriptet inneholder noen feil, vil funksjonen simplexml_load_file () returnere usann, og feilmeldingen skrives ut ved hjelp av libxml_get_errors () -funksjonen. Hvis det ikke finnes noen feil i XML-filen, vil innholdet i filen konvertere riktig til en todimensjonal assosiativ matrise.



// Aktiver håndtering av brukerfeil
libxml_use_internal_errors (EKTE);

// Lag XML -objekt
$ objXml = simplexml_load_file ('courses.xml');

// Utskriftsfeil hvis XML -objektet returnerer false
hvis ($ objXml === FALSK) {
kastet ut 'Det oppstod feil ved analyse av XML -filen. n';
for hver( libxml_get_errors () som $ feil) {
kastet ut $ feil->beskjed;
}
exit ;
}

// Konverter XML -objekt til JSON -objekt
$ objJson = json_encode ($ objXml);
// Konverter JSON -objekt til en assosiativ matrise
$ assarr = json_decode ($ objJson, EKTE);

// Skriv ut strukturen til det assosiative matrisen
kastet ut '
';  
print_r ($assArray);
echo '
'
;

?>

Produksjon:

Følgende utdata vises etter kjøring av PHP -skriptet. Her finnes det ingen feil i XML -filen. Så, en todimensjonal matrise har generert som det forrige eksemplet basert på innholdet i XML-filen, courses.xml.

Eksempel 3: Konverter XML-innhold til en assosiativ matrise

Følgende skript viser måten å konvertere XML -data til en assosiativ matrise ved å bruke SimpleXMLElement () -funksjonen. I skriptet lagres XML -innholdet i en variabel som heter $ xml som brukes som argument for funksjonen, SimpleXMLElement (). Deretter brukes json_encode () og json_decode () -funksjonen for å hente det assosiative arrayet etter å ha konvertert XML -filinnholdet.



// Definer XML -variabelen
$ xml = <<


[e -postbeskyttet]

12 / A, Dhanmondi
Dhaka



[e -postbeskyttet]

156, Motiv
Dhaka



[e -postbeskyttet]

21 / B, Mogbazar
Dhaka



XML
;

// Lag XML -objekt
$ xmlObject = nySimpleXMLElement($ xml);
// Lag JSON -objekt
$ jsonObject = json_encode ($ xmlObject);
// Konverter JSON -objekt til en assosiativ matrise
$ assArray = json_decode ($ jsonObject, ekte);

// Skriv ut strukturen til det assosiative matrisen
kastet ut '
';  
print_r ($assarr);
echo '
'
;

?>

Produksjon:

Følgende utdata vises etter kjøring av PHP -skriptet. Her genereres en todimensjonal matrise basert på innholdet i XML-variabelen, $ xml.

Konklusjon:

Det var tre forskjellige måter å konvertere XML -innhold til en assosiativ matrise som ble vist i denne opplæringen. Dette vil hjelpe leserne til å kjenne måten å jobbe med XML -data og analysere dataene fra XML -innholdet ved å bruke et PHP -skript enkelt.