Teisendage XML PHP -s assotsiatiivseks massiiviks

Convert Xml Associative Array Php



XML (laiendatav märgistuskeel) on üks märgistuskeele tüüp, mida kasutatakse andmete salvestamiseks inimesele loetavas vormingus. See erineb teistest märgistuskeeltest. Iga selle keele silt on kasutaja määratud. XML -i kasutamine on parem lahendus väikese koguse andmete salvestamiseks, kui te ei soovi andmete salvestamiseks kasutada ühtegi andmebaasi. XML -dokumendi andmetele saab hõlpsasti juurde pääseda ja neid saab kasutada mis tahes veebirakenduses, kasutades PHP -skripti. Selles õpetuses on näidatud, kuidas XML -dokumenti sõeluda ja assotsiatiivsesse massiivi salvestada.

Vajalikud funktsioonid

Mõnda sisseehitatud funktsiooni kasutatakse XML-sisu teisendamiseks assotsiatiivseks PHP-massiiviks. Allpool selgitatakse erinevate funktsioonide eesmärke.





file_get_contents ():



See funktsioon tagastab stringi andmed, teisendades kõik XML -andmed. See võtab argumendina mis tahes XML -faili nime.



simplexml_load_string ():





See funktsioon tagastab XML -objekti, teisendades XML -stringi andmed. See võtab XML -stringi andmeid argumendina.

simplexml_load_file ():



See funktsioon tagastab XML -objekti, teisendades XML -faili sisu. See võtab XML -faili nime argumendina.

SimpleXMLElement ():

Seda kasutatakse XML -objektide loomiseks XML -andmetest. See võtab argumendina XML -sisu väärtuse.

json_encode ():

See tagastab JSON -objekti, teisendades XML -objekti. See võtab XML -objekti muutuja argumendina.

json_decode ():

See tagastab assotsiatiivse PHP massiivi, teisendades JSON -i andmed. See võtab argumendina objekti muutuja JSON.

Loo XML -fail

Peate looma XML -faili või määrama skriptis XML -andmed, et teada saada, kuidas XML -andmeid teisendada assotsiatiivseks PHP -massiiviks. Looge järgmise sisuga XML -fail nimega course.xml ja salvestage see asukohta, kus asub PHP -skript. Fail sisaldab vanemelemendi all alamelemente. Niisiis genereeritakse kahemõõtmeline assotsiatiivne massiiv pärast järgmise XML-faili teisendamist PHP-massiiviks.

kursused.xml

versioon='1.0'?>
>
>Veebiprogrammeerimine>
>6 kuud>
>
>
>PHP programmeerimise rõõm>
>Alan Forbes>
>Ploomi saar>
>
>
>PHP& MySQL algaja ninjale
Tom Butler ja Kevin Yank
SitePoint


Head First PHP & MySQL
Lynn Beighley ja Michael Morrison
O'Reilly


Näide 1: teisendage XML-faili sisu assotsiatiivseks massiiviks ilma viga kontrollimata

Järgmine skript näitab funktsioonide file_get_contents () ja simplexml_load_string () kasutamist XML -objekti loomiseks. Siin kasutatakse varem loodud konverteerimiseks faili course.xml. Järgmisena kasutatakse pärast XML -faili sisu teisendamist assotsiatiivse massiivi saamiseks funktsiooni json_encode () ja json_decode (). Kui XML -sisus pole ühtegi viga, siis järgmist skripti ei näidata ühtegi viga. Siin, | _+_ | märgendit kasutatakse massiivi printimiseks vormindatud viisil.



// Määrake olemasolev XML -fail
$ xml = 'course.xml';

// Lugege XML -faili täielikku sisu XML -stringina
$ xmlandmed = file_get_contents ($ xml);

// Teisenda XML -stringi andmed XML -objektiks
$ xmlObject = simplexml_load_string ($ xmlandmed);

// Teisenda XML -objekt JSON -objektiks
$ jsonObject = json_encode ($ xmlObject);

// Teisenda JSON -objekt assotsiatiivseks massiiviks
$ assArray = json_decode ($ jsonObject, tõsi);

// Prindi assotsiatiivse massiivi struktuur
viskas välja '
  
';

?>

Väljund:

Pärast PHP skripti käivitamist kuvatakse järgmine väljund. Siin genereeritakse kahemõõtmeline massiiv, mis põhineb XML-faili, course.xml, sisul.

Näide-2: teisendage XML-faili sisu kontrollivigaga assotsiatiivseks massiiviks

XML -i assotsiatiivseks massiiviks teisendamisel on parem kontrollida viga. See aitab kodeerijal koodi siluda, kui vea kontrollimine on skriptis rakendatud. Järgmine skript näitab viise, kuidas XML -faili sisu teisendada assotsiatiivseks massiiviks, kasutades funktsiooni simplexml_load_file () koos veakäsitlusega. Funktsiooni libxml_use_internal_errors () kasutatakse vea käsitlemise võimaldamiseks koos väärtusega TRUE. Kui skriptis kasutatav XML -faili sisu sisaldab viga, tagastab funktsioon simplexml_load_file () väärtuse vale ja veateade prinditakse funktsiooni libxml_get_errors () abil. Kui XML-failis pole viga, teisendatakse faili sisu korralikult kahemõõtmeliseks assotsiatiivseks massiiviks.



// Luba kasutaja vigade käsitlemine
libxml_use_internal_errors (TÕSI);

// Loo XML -objekt
$ objXml = simplexml_load_file ('course.xml');

// Prindiviga, kui XML -objekt tagastab vale
kui ($ objXml === VALE) {
viskas välja „XML -faili parsimisel ilmnes tõrkeid. n';
igaühele( libxml_get_errors () nagu $ viga) {
viskas välja $ viga->sõnum;
}
väljumine ;
}

// Teisenda XML -objekt JSON -objektiks
$ objJson = json_encode ($ objXml);
// Teisenda JSON -objekt assotsiatiivseks massiiviks
$ assarr = json_decode ($ objJson, TÕSI);

// Prindi assotsiatiivse massiivi struktuur
viskas välja '
';  
print_r ($assArray);
echo '
'
;

?>

Väljund:

Pärast PHP skripti täitmist ilmub järgmine väljund. Siin pole XML -failis ühtegi viga. Niisiis, kahemõõtmeline massiiv on genereeritud nagu eelmine näide, XML-faili, course.xml sisu põhjal.

Näide-3: teisendage XML-sisu assotsiatiivseks massiiviks

Järgmine skript näitab võimalust XML -andmete teisendamiseks assotsiatiivseks massiiviks, kasutades funktsiooni SimpleXMLElement (). Skriptis salvestatakse XML -sisu muutuja nimega $ xml, mida kasutatakse funktsiooni SimpleXMLElement () argumendina. Järgmisena kasutatakse pärast XML -faili sisu teisendamist assotsiatiivse massiivi saamiseks funktsiooni json_encode () ja json_decode ().



// Määrake XML muutuja
$ xml = <<


[e -post kaitstud]

12 / A, Dhanmondi
Dhaka



[e -post kaitstud]

156, motiiv
Dhaka



[e -post kaitstud]

21 / B, Mogbazar
Dhaka



XML
;

// Loo XML -objekt
$ xmlObject = uusSimpleXMLElement($ xml);
// Loo JSON -objekt
$ jsonObject = json_encode ($ xmlObject);
// Teisenda JSON -objekt assotsiatiivseks massiiviks
$ assArray = json_decode ($ jsonObject, tõsi);

// Prindi assotsiatiivse massiivi struktuur
viskas välja '
';  
print_r ($assarr);
echo '
'
;

?>

Väljund:

Pärast PHP skripti käivitamist kuvatakse järgmine väljund. Siin genereeritakse kahemõõtmeline massiiv XML muutuja $ xml sisu põhjal.

Järeldus:

Selles õpetuses näidati XML -sisu assotsiatiivseks massiiviks teisendamiseks kolme erinevat viisi. See aitab lugejatel teada saada, kuidas töötada XML -andmetega ja analüüsida XML -sisu andmeid, kasutades lihtsalt PHP -skripti.