XML (Extensible Markup Language) je jedna vrsta jezika označavanja koji se koristi za spremanje podataka u formatu čitljivom za ljude. Razlikuje se od ostalih jezika za označavanje. Svaku oznaku ovog jezika definira korisnik. Korištenje XML -a bolje je rješenje za pohranu male količine podataka ako ne želite koristiti nikakvu bazu podataka za spremanje podataka. Podaci iz XML dokumenta mogu se lako pristupiti i koristiti u bilo kojoj web aplikaciji pomoću PHP skripte. U ovom vodiču prikazano je kako se XML dokument može raščlaniti i pohraniti u asocijativni niz.
Potrebne funkcije
Neke ugrađene funkcije koriste se za pretvaranje XML sadržaja u asocijativni PHP niz. Dolje su objašnjene svrhe različitih funkcija.
file_get_contents ():
Ova funkcija vraća podatke niza pretvaranjem bilo kojih XML podataka. Kao argument uzima bilo koji naziv XML datoteke.
simplexml_load_string ():
Ova funkcija vraća XML objekt pretvaranjem podataka XML niza. Kao argument uzima podatke XML niza.
simplexml_load_file ():
Ova funkcija vraća XML objekt pretvaranjem sadržaja XML datoteke. Ime XML datoteke uzima kao argument.
SimpleXMLElement ():
Koristi se za stvaranje XML objekta iz XML podataka. Vrijednost XML sadržaja uzima kao argument.
json_encode ():
Vraća JSON objekt pretvaranjem XML objekta. Za argument uzima XML objektnu varijablu.
json_decode ():
Vraća asocijativni PHP niz pretvaranjem JSON podataka. Za argument uzima varijablu objekta JSON.
Napravite XML datoteku
Morat ćete stvoriti XML datoteku ili definirati XML podatke u skripti da biste znali način pretvaranja XML podataka u asocijativni PHP niz. Napravite XML datoteku pod nazivom courses.xml sa sljedećim sadržajem i spremite je na mjesto gdje se nalazi PHP skripta. Datoteka sadrži podređene elemente pod roditeljskim elementom. Dakle, dvodimenzionalni asocijativni niz generirat će se nakon pretvaranja sljedeće XML datoteke u PHP niz.
tečajevi.xml
verzija='1,0'?>>
Tom Butler i Kevin Yank
SitePoint
Vodite prvo PHP & MySQL
Lynn Beighley i Michael Morrison
O’Reilly
Primjer-1: Pretvorite sadržaj XML datoteke u asocijativni niz bez pogreške provjere
Sljedeća skripta prikazuje uporabu funkcija file_get_contents () i simplexml_load_string () za stvaranje XML objekta. Ovdje se datoteka courses.xml koristi za konverziju koja je već stvorena. Zatim se funkcije json_encode () i json_decode () koriste za dobivanje asocijativnog niza nakon pretvaranja sadržaja XML datoteke. Ako nema pogreške u XML sadržaju, sljedeća skripta neće prikazati pogrešku. Ovdje, | _+_ | tag se koristi za ispis niza na formatiran način.
// Definiranje postojeće XML datoteke
$ xml = 'tečajevi.xml';
// Pročitajte cijeli sadržaj XML datoteke kao XML niz
$ xmlPodaci = file_get_contents ($ xml);
// Pretvorimo podatke XML niza u XML objekt
$ xmlObject = simplexml_load_string ($ xmlPodaci);
// Pretvorimo XML objekt u JSON objekt
$ jsonObject = json_encode ($ xmlObject);
// Pretvorimo JSON objekt u asocijativni niz
$ assArray = json_decode ($ jsonObject, pravi);
// Ispis strukture asocijativnog niza
izbaciti '
';
?>
Izlaz:
Sljedeći izlaz pojavit će se nakon izvršavanja PHP skripte. Ovdje se dvodimenzionalni niz generira na temelju sadržaja XML datoteke, courses.xml.
Primjer 2: Pretvorite sadržaj XML datoteke u asocijativni niz s pogreškom provjere
Bolje je provjeriti pogrešku prilikom pretvaranja XML -a u asocijativni niz. Kodiraču će pomoći u otklanjanju pogrešaka u kodu ako je provjera pogrešaka implementirana u skriptu. Sljedeća skripta prikazuje načine pretvaranja sadržaja XML datoteke u asocijativni niz pomoću funkcije simplexml_load_file () s rukovanjem pogreškama. Funkcija libxml_use_internal_errors () koristi se s TRUE vrijednošću za omogućavanje obrade pogrešaka. Ako sadržaj XML datoteke koji se koristi u skripti sadrži bilo koju pogrešku, funkcija simplexml_load_file () vratit će vrijednost false, a poruka o pogrešci ispisat će se pomoću funkcije libxml_get_errors (). Ako nema pogreške u XML datoteci, tada će se sadržaj datoteke ispravno pretvoriti u dvodimenzionalni asocijativni niz.
// Omogućivanje rukovanja pogreškama korisnika
libxml_use_internal_errors (PRAVI);
// Stvaranje XML objekta
$ objXml = simplexml_load_file ('tečajevi.xml');
// Pogreška ispisa ako XML objekt vraća vrijednost false
ako ($ objXml === LAŽNO) {
izbaciti 'Došlo je do pogrešaka pri raščlanjivanju XML datoteke. n';
za svakoga( libxml_get_errors () kao $ pogreška) {
izbaciti $ pogreška->poruka;
}
Izlaz ;
}
// Pretvorimo XML objekt u JSON objekt
$ objJson = json_encode ($ objXml);
// Pretvorimo JSON objekt u asocijativni niz
$ assarr = json_decode ($ objJson, PRAVI);
// Ispis strukture asocijativnog niza
izbaciti '
';
print_r ($assArray);
echo '';
?>
Izlaz:
Sljedeći izlaz pojavit će se nakon izvršavanja PHP skripte. Ovdje nema pogreške u XML datoteci. Dakle, dvodimenzionalni niz je generirao kao i prethodni primjer na temelju sadržaja XML datoteke, courses.xml.
Primjer-3: Pretvorite XML sadržaj u asocijativni niz
Sljedeća skripta prikazuje način pretvaranja XML podataka u asocijativni niz pomoću funkcije SimpleXMLElement (). U skripti se XML sadržaj pohranjuje u varijablu pod nazivom $ xml koja se koristi kao argument funkcije, SimpleXMLElement (). Zatim se funkcije json_encode () i json_decode () koriste za dobivanje asocijativnog niza nakon pretvaranja sadržaja XML datoteke.
// Definiranje XML varijable
$ xml = <<
[zaštićena e -pošta]
12 / A, Dhanmondi
Daka
[zaštićena e -pošta]
156, Motiv
Daka
[zaštićena e -pošta]
21 / B, Mogbazar
Daka
XML;
// Stvaranje XML objekta
$ xmlObject = noviSimpleXMLElement($ xml);
// Stvaranje JSON objekta
$ jsonObject = json_encode ($ xmlObject);
// Pretvorimo JSON objekt u asocijativni niz
$ assArray = json_decode ($ jsonObject, pravi);
// Ispis strukture asocijativnog niza
izbaciti '
';
print_r ($assarr);
echo '';
?>
Izlaz:
Sljedeći izlaz pojavit će se nakon izvršavanja PHP skripte. Ovdje se dvodimenzionalni niz generira na temelju sadržaja XML varijable, $ xml.
Zaključak:
Postoje tri različita načina pretvaranja XML sadržaja u asocijativni niz koji su prikazani u ovom vodiču. To će čitateljima pomoći da znaju način rada s XML podacima i raščlane podatke iz XML sadržaja pomoću jednostavne PHP skripte.