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'?>>
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.