Konvertujte XML na asociatívne pole v PHP

Convert Xml Associative Array Php



XML (Extensible Markup Language) je jeden typ značkovacieho jazyka, ktorý sa používa na ukladanie údajov vo formáte čitateľnom pre človeka. Líši sa od ostatných značkovacích jazykov. Každý štítok tohto jazyka je definovaný používateľom. Použitie XML je lepším riešením na uloženie malého množstva údajov, ak nechcete na ukladanie údajov používať žiadnu databázu. K údajom z dokumentu XML je možné ľahko pristupovať a používať ich v akejkoľvek webovej aplikácii pomocou skriptu PHP. V tomto návode je ukázané, ako je možné dokument XML analyzovať a uložiť do asociatívneho poľa.

Potrebné funkcie

Niektoré vstavané funkcie sa používajú na konverziu obsahu XML na asociatívne pole PHP. Účel rôznych funkcií je vysvetlený nižšie.







file_get_contents ():



Táto funkcia vracia reťazcové údaje konverziou akýchkoľvek údajov XML. Ako argument berie akýkoľvek názov súboru XML.



simplexml_load_string ():





Táto funkcia vracia objekt XML konverziou údajov reťazca XML. Ako argument berie údaje reťazca XML.

simplexml_load_file ():



Táto funkcia vracia objekt XML prevádzaním obsahu súboru XML. Ako argument berie názov súboru XML.

SimpleXMLElement ():

Slúži na vytvorenie objektu XML z údajov XML. Ako argument berie hodnotu obsahu XML.

json_encode ():

Vracia objekt JSON konverziou objektu XML. Ako argument berie premennú objektu XML.

json_decode ():

Konvertuje údaje JSON a vráti asociatívne pole PHP. Ako argument berie premennú objektu JSON.

Vytvorte súbor XML

Bude potrebné, aby ste vytvorili súbor XML alebo definovali údaje XML v skripte, aby ste vedeli, ako previesť údaje XML na asociatívne pole PHP. Vytvorte súbor XML s názvom courses.xml s nasledujúcim obsahom a uložte ho na miesto, kde je skript PHP. Súbor obsahuje podradené prvky pod nadradeným prvkom. Dvojrozmerné asociatívne pole sa teda vygeneruje po konverzii nasledujúceho súboru XML na pole PHP.

kurzy.xml

verzia=„1,0“?>
>
>Webové programovanie>
>6 mesiacov>
>
>
>Radosť z programovania PHP>
>Alan Forbes>
>Slivkový ostrov>
>
>
>PHP& MySQL nováčik až ninja
Tom Butler a Kevin Yank
SitePoint


Hlavou je PHP a MySQL
Lynn Beighley a Michael Morrison
O'Reilly


Príklad 1: Previesť obsah súboru XML na asociatívne pole bez chyby kontroly

Nasledujúci skript ukazuje použitie funkcií file_get_contents () a simplexml_load_string () na vytvorenie objektu XML. Tu sa súbor courses.xml používa na konverziu, ktorá bola vytvorená predtým. Ďalej sa na získanie asociatívneho poľa po konverzii obsahu súboru XML použijú funkcie json_encode () a json_decode (). Ak v obsahu XML neexistuje žiadna chyba, nasledujúci skript nezobrazí žiadnu chybu. Tu | _+_ | tag sa používa na formátované vytlačenie poľa.



// Definujte existujúci súbor XML
$ xml = 'courses.xml';

// Prečítajte si celý obsah súboru XML ako reťazec XML
$ xmlÚdaje = file_get_contents ($ xml);

// Previesť údaje reťazca XML na objekt XML
$ xmlObject = simplexml_load_string ($ xmlÚdaje);

// Previesť objekt XML na objekt JSON
$ jsonObject = json_encode ($ xmlObject);

// Previesť objekt JSON na asociatívne pole
$ assArray = json_decode ($ jsonObject, pravda);

// Vytlačí štruktúru asociatívneho poľa
zahodil '
  
';

?>

Výkon:

Po spustení skriptu PHP sa zobrazí nasledujúci výstup. Tu sa generuje dvojrozmerné pole na základe obsahu súboru XML, courses.xml.

Príklad 2: Previesť obsah súboru XML na asociatívne pole s chybou kontroly

Pri prevode XML na asociatívne pole je lepšie skontrolovať chybu. Pomôže kodérovi ladiť kód, ak je v skripte implementovaná kontrola chýb. Nasledujúci skript ukazuje spôsoby, ako previesť obsah súboru XML na asociatívne pole pomocou funkcie simplexml_load_file () so spracovaním chýb. Na povolenie spracovania chýb sa používa funkcia libxml_use_internal_errors () s hodnotou TRUE. Ak obsah súboru XML, ktorý je použitý v skripte, obsahuje akúkoľvek chybu, funkcia simplexml_load_file () vráti hodnotu false a chybové hlásenie sa vytlačí pomocou funkcie libxml_get_errors (). Ak v súbore XML neexistuje žiadna chyba, obsah súboru sa správne skonvertuje na dvojrozmerné asociatívne pole.



// Povoliť spracovanie chýb používateľov
libxml_use_internal_errors (PRAVDA);

// Vytvorenie objektu XML
$ objXml = simplexml_load_file ('courses.xml');

// Chyba tlače, ak objekt XML vráti hodnotu false
keby ($ objXml === NEPRAVDA) {
zahodil 'Pri analýze súboru XML sa vyskytli chyby. n';
pre každý( libxml_get_errors () ako $ chyba) {
zahodil $ chyba->správu;
}
východ ;
}

// Previesť objekt XML na objekt JSON
$ objJson = json_encode ($ objXml);
// Previesť objekt JSON na asociatívne pole
$ assarr = json_decode ($ objJson, PRAVDA);

// Vytlačí štruktúru asociatívneho poľa
zahodil
';  
print_r ($assArray);
echo '
;

?>

Výkon:

Po spustení skriptu PHP sa zobrazí nasledujúci výstup. V tomto súbore XML neexistuje žiadna chyba. Dvojrozmerné pole sa teda vygenerovalo ako v predchádzajúcom prípade na základe obsahu súboru XML, courses.xml.

Príklad 3: Konvertujte obsah XML na asociatívne pole

Nasledujúci skript ukazuje spôsob prevodu údajov XML na asociatívne pole pomocou funkcie SimpleXMLElement (). V skripte je obsah XML uložený do premennej s názvom $ xml, ktorá sa používa ako argument funkcie SimpleXMLElement (). Ďalej sa funkcie json_encode () a json_decode () použijú na získanie asociatívneho poľa po konverzii obsahu súboru XML.



// Definujte premennú XML
$ xml = <<


[chránené e -mailom]

12 / A, Dhanmondi
Dháka



[chránené e -mailom]

156, motív
Dháka



[chránené e -mailom]

21 / B, Mogbazar
Dháka



XML
;

// Vytvorenie objektu XML
$ xmlObject = NovýSimpleXMLElement($ xml);
// Vytvorenie objektu JSON
$ jsonObject = json_encode ($ xmlObject);
// Previesť objekt JSON na asociatívne pole
$ assArray = json_decode ($ jsonObject, pravda);

// Vytlačí štruktúru asociatívneho poľa
zahodil
';  
print_r ($assarr);
echo '
;

?>

Výkon:

Po spustení skriptu PHP sa zobrazí nasledujúci výstup. Tu sa generuje dvojrozmerné pole na základe obsahu premennej XML $ xml.

Záver:

V tomto návode boli zobrazené tri rôzne spôsoby prevodu obsahu XML na asociatívne pole. To pomôže čitateľom poznať spôsob práce s údajmi XML a ľahko analyzovať údaje z obsahu XML pomocou skriptu PHP.