I-convert ang XML sa Associative Array sa PHP

Convert Xml Associative Array Php



Ang XML (Extensible Markup Language) ay isang uri ng wikang markup na ginagamit upang maiimbak ang data sa isang nababasa na format ng tao. Ito ay naiiba mula sa iba pang mga markup na wika. Ang bawat tag ng wikang ito ay tinukoy ng gumagamit. Ang paggamit ng XML ay ang mas mahusay na solusyon upang mag-imbak ng isang maliit na halaga ng data kapag hindi mo nais na gumamit ng anumang database para sa pagtatago ng data. Ang data mula sa dokumento ng XML ay madaling ma-access at magamit sa anumang web application gamit ang isang PHP script. Kung paano maaaring mai-parse ang dokumento ng XML at maiimbak sa isang naiugnay na array ay ipinapakita sa tutorial na ito.

Mga Kinakailangan na Pag-andar

Ang ilang mga built-in na pag-andar ay ginagamit upang mai-convert ang nilalaman ng XML sa isang nauugnay na PHP array. Ang mga layunin ng iba't ibang mga pag-andar ay ipinaliwanag sa ibaba.







file_get_contents ():



Ibinabalik ng pagpapaandar na ito ang data ng string sa pamamagitan ng pag-convert ng anumang data ng XML. Tumatagal ito ng anumang XML file name bilang isang argument.



simplexml_load_string ():





Ibinabalik ng pagpapaandar na ito ang XML na bagay sa pamamagitan ng pag-convert ng data ng XML string. Kinakailangan ang data ng XML string bilang isang argument.

simplexml_load_file ():



Ibinabalik ng pagpapaandar na ito ang XML object sa pamamagitan ng pag-convert ng nilalaman ng XML file. Kinukuha ang XML file name bilang isang argument.

SimpleXMLElement ():

Ginagamit ito upang lumikha ng isang XML na bagay mula sa data ng XML. Kinukuha ang halaga ng nilalaman ng XML bilang isang argument.

json_encode ():

Ibinabalik nito ang object na JSON sa pamamagitan ng pag-convert ng XML object. Kinukuha ang variable ng XML object bilang isang argument.

json_decode ():

Ibinabalik nito ang naiugnay na PHP array sa pamamagitan ng pag-convert ng data ng JSON. Kinukuha ang variable ng object ng JSON bilang isang argument.

Lumikha ng XML File

Hihilingin sa iyo na lumikha ng isang XML file o tukuyin ang data ng XML sa script upang malaman ang paraan sa pag-convert ng XML data sa isang nauugnay na PHP array. Lumikha ng isang XML file na pinangalanang course.xml kasama ang sumusunod na nilalaman at iimbak ito sa lokasyon kung nasaan ang PHP script. Naglalaman ang file ng mga elemento ng bata sa ilalim ng elemento ng magulang. Kaya, ang isang dalawang-dimensional na nauugnay na array ay bubuo pagkatapos mai-convert ang sumusunod na XML file sa isang PHP array.

mga kurso.xml

bersyon='1.0'?>
>
>Programming sa Web>
>6 na buwan>
>
>
>Ang Kagalakan ng Programming ng PHP>
>Alan Forbes>
>Plum Island>
>
>
>PHP& MySQL Novice kay Ninja
Tom Butler at Kevin Yank
SitePoint


Head First PHP at MySQL
Lynn Beighley at Michael Morrison
O'Reilly


Halimbawa-1: I-convert ang nilalaman ng file ng XML sa isang nauugnay na array nang hindi nag-check ng error

Ipinapakita ng sumusunod na script ang mga paggamit ng file_get_contents () at simplexml_load_string () na mga function upang lumikha ng XML object. Dito, ginagamit ang files.xml file para sa conversion na nilikha dati. Susunod, ang function na json_encode () at json_decode () ay ginagamit upang makuha ang naiugnay na array pagkatapos na mai-convert ang nilalaman ng XML file. Kung walang error na mayroon sa nilalaman ng XML, walang error na ipapakita ng sumusunod na script. Dito,

  ginagamit ang tag upang mai-print ang array sa isang format na paraan.



// Tukuyin ang mayroon nang XML file
$ xml = 'kurso.xml';

// Basahin ang buong nilalaman ng XML file bilang XML string
$ xmlData = file_get_contents ($ xml);

// convert XML string data into XML object
$ xmlObject = simplexml_load_string ($ xmlData);

// convert XML object into JSON object
$ jsonObject = json_encode ($ xmlObject);

// convert JSON object into an associate associate
$ assArray = json_decode ($ jsonObject, totoo);

// I-print ang istraktura ng associate ng array
itinapon '

';  
print_r ($assArray);
echo '

'
;

?>

Output:

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang PHP script. Dito, ang isang dalawang-dimensional na array ay nabuo batay sa nilalaman ng file na XML, mga kurso.xml.

Halimbawa-2: I-convert ang nilalaman ng file ng XML sa isang nauugnay na array na may error sa pag-check

Mas mahusay na suriin ang error kapag nagko-convert ng XML sa isang nauugnay na array. Tutulungan nito ang coder na i-debug ang code kung ipinatupad ang script sa error. Ipinapakita ng sumusunod na script ang mga paraan upang mai-convert ang nilalaman ng file ng XML sa isang nauugnay na array sa pamamagitan ng paggamit ng function na simplexml_load_file () na may error sa paghawak. Ginagamit ang pagpapaandar ng libxml_use_internal_errors () na may TRUE na halaga upang paganahin ang paghawak ng error. Kung ang nilalamang file ng XML na ginamit sa script ay naglalaman ng anumang error pagkatapos ang function na simplexml_load_file () ay babalik na mali, at ang mensahe ng error ay mai-print sa pamamagitan ng paggamit ng libxml_get_errors () function. Kung walang error sa XML file, kung gayon ang nilalaman ng file ay magko-convert nang maayos sa isang dalawang-dimensional na associateative array.



// Paganahin ang paghawak ng error sa gumagamit
libxml_use_internal_errors (TOTOO);

// Lumikha ng XML Bagay
$ objXml = simplexml_load_file ('kurso.xml');

// Pag-print ng error kung ang XML na bagay ay bumalik na hindi totoo
kung ($ objXml === MALI) {
itinapon 'Mayroong mga error sa pag-parse ng XML file. n';
unahan( libxml_get_errors () bilang $ error) {
itinapon $ error->mensahe;
}
labasan ;
}

// convert XML object into JSON object
$ objJson = json_encode ($ objXml);
// convert JSON object into an associate associate
$ assarr = json_decode ($ objJson, TOTOO);

// I-print ang istraktura ng associate ng array
itinapon '
';  
print_r ($assarr);
echo '
'
;

?>

Output:

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang PHP script. Dito, walang error na mayroon sa XML file. Kaya, ang isang dalawang-dimensional na array ay nakabuo tulad ng nakaraang halimbawa batay sa nilalaman ng file na XML, mga course.xml.

Halimbawa-3: I-convert ang nilalaman ng XML sa isang associate na array

Ipinapakita ng sumusunod na script ang paraan ng pag-convert ng data ng XML sa isang nauugnay na array sa pamamagitan ng paggamit ng SimpleXMLElement () na pag-andar. Sa script, ang nilalaman ng XML ay nakaimbak sa isang variable na pinangalanang $ xml na ginagamit bilang argument ng pagpapaandar, SimpleXMLElement (). Susunod, ang function na json_encode () at json_decode () ay ginagamit upang makuha ang naiugnay na array pagkatapos na mai-convert ang nilalaman ng XML file.



// Tukuyin ang variable ng XML
$ xml = <<


[protektado ng email]

12 / A, Dhanmondi
Dhaka



[protektado ng email]

156, Motibo
Dhaka



[protektado ng email]

21 / B, Mogbazar
Dhaka



XML
;

// Lumikha ng XML na bagay
$ xmlObject = bagoSimpleXMLElement($ xml);
// Lumikha ng JSON Object
$ jsonObject = json_encode ($ xmlObject);
// convert JSON object into an associate associate
$ assArray = json_decode ($ jsonObject, totoo);

// I-print ang istraktura ng associate ng array
itinapon '
';  
print_r ($assArray);
echo '
'
;

?>

Output:

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang PHP script. Dito, ang isang dalawang-dimensional na array ay nabuo batay sa nilalaman ng variable na XML, $ xml.

Konklusyon:

Mayroong tatlong magkakaibang paraan ng pag-convert ng nilalaman ng XML sa isang nauugnay na array na ipinakita sa tutorial na ito. Matutulungan nito ang mga mambabasa na malaman ang paraan upang gumana sa XML data at mai-parse ang data mula sa nilalamang XML sa pamamagitan ng paggamit ng isang PHP script na madali.