Web Development ကိုလုပ်ဆောင်နေသည့်အခါကျွန်ုပ်တို့သည် XML အချက်အလက်များကိုတတိယပါတီ၏ APIs များမှရရှိသောအချက်အလက်များဆိုင်ရာအချက်အလက်များသို့မဟုတ်အချို့သော configuration files များကိုခွဲခြမ်းစိတ်ဖြာခြင်းကဲ့သို့သော XML အချက်အလက်များကိုမကြာခဏလုပ်ဆောင်ရန်လိုအပ်သည်။ PHP တွင် XML_PARSE နှင့် XML_SESSEST_ELECTE_HANDLER သည် XML အချက်အလက်များကိုလုပ်ဆောင်ရန်အတွက်စီစဉ်ထားသောနည်းလမ်းတစ်ခုဖြစ်သည်။
ဤဆောင်းပါးသည် XML အကြောင်းအရာများကိုခွဲခြမ်းစိတ်ဖြာရန်နှင့်ကျွန်ုပ်တို့လိုအပ်သည့်အချက်အလက်များကိုထုတ်ယူရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြရန်လက်တွေ့ကျသောအမှုတစ်ခုကိုအသုံးပြုလိမ့်မည်။
Simplexml , Domdocument , XMLreader စသည်တို့ကို PHP တွင် XML တွင် XML တွင်လုပ်ဆောင်ရန်နည်းလမ်းများစွာရှိသည် ။ ဤ parsing နည်းလမ်းသည် Volume XML ကိုကိုင်တွယ်ရန်အလွန်ကောင်းမွန်သည်။
XML_Parser_Create () - XML parser ကိုဖန်တီးပါ။
XML_SET_ELEMEMETER_HANDLER () - အစနှင့်အဆုံး tags များကိုကိုင်တွယ်သော callback function ကိုသတ်မှတ်သည်။
XML_Parse () - xml ကိုခွဲပါ။
xml_parser_Free () : parser အရင်းအမြစ်များကိုလွှတ်ပေးပါ။
အကြောင်းအရာပလက်ဖောင်းတစ်ခုမှ XML ဒေတာတစ်ခုရှိကြောင်းယူဆကြပါစို့။
<?xml version="1.0"?>
<articles>
<article>
<title>PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်</title>
<author>li lei</author>
<url>https://m66.net/articles/php-xml-guide</url>
</article>
<article>
<title>နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler</title>
<author>han meimei</author>
<url>https://m66.net/articles/xml-handler-deepdive</url>
</article>
</articles>
ရည်မှန်းချက် - ဆောင်းပါးအားလုံး၏ခေါင်းစဉ်များနှင့်ချိတ်ဆက်မှုများနှင့်ချိတ်ဆက်မှုများကိုဖြည်ချပြီးသူတို့ကိုခင်းကျင်းစွာသိမ်းထားသည်။
<?php
$xmlData = <<<XML
<?xml version="1.0"?>
<articles>
<article>
<title>PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်</title>
<author>li lei</author>
<url>https://m66.net/articles/php-xml-guide</url>
</article>
<article>
<title>နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler</title>
<author>han meimei</author>
<url>https://m66.net/articles/xml-handler-deepdive</url>
</article>
</articles>
XML;
$parser = xml_parser_create("UTF-8");
$articles = [];
$currentTag = "";
$currentArticle = [];
// Start Tag ပရိုဆက်ဆာကိုသတ်မှတ်ပါ
function startElement($parser, $name, $attrs) {
global $currentTag;
$currentTag = strtolower($name);
}
// အဆုံး tag processor ကိုသတ်မှတ်ပါ
function endElement($parser, $name) {
global $currentTag, $currentArticle, $articles;
if (strtolower($name) == 'article') {
$articles[] = $currentArticle;
$currentArticle = [];
}
$currentTag = "";
}
// ဇာတ်ကောင်ဒေတာပရိုဆက်ဆာကိုသတ်မှတ်ပါ
function characterData($parser, $data) {
global $currentTag, $currentArticle;
$data = trim($data);
if ($data === '') return;
if (in_array($currentTag, ['title', 'author', 'url'])) {
$currentArticle[$currentTag] = $data;
}
}
// အပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်များကိုတက် setting
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
// ခွဲခြမ်းစိတ်ဖြာစတင်ပါ
if (!xml_parse($parser, $xmlData, true)) {
die(sprintf("XML အမှား: %s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
xml_parser_free($parser);
// output ကိုခွဲခြမ်းစိတ်ဖြာရလဒ်များ
echo "<pre>";
print_r($articles);
echo "</pre>";
?>
Array
(
[0] => Array
(
[title] => PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်
[author] => li lei
[url] => https://m66.net/articles/php-xml-guide
)
[1] => Array
(
[title] => နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler
[author] => han meimei
[url] => https://m66.net/articles/xml-handler-deepdive
)
)
ဤကိစ္စမှတဆင့် XML_Parse နှင့် XML_set_element_Handler သည် ကျွန်ုပ်တို့အားလိုအပ်သော tag နှင့် text content များကိုလုပ်ဆောင်ရန်ခွင့်ပြုနိုင်သည်ကိုကျွန်ုပ်တို့တွေ့နိုင်သည်။ ဤနည်းလမ်းသည် Simplexml ထက်အနည်းငယ်ရှုပ်ထွေးသော်လည်း XML ဖိုင်သည်အလွန်ကြီးမားသည်သို့မဟုတ်ကွန်ယက်စီးဆင်းမှုမှလာသည်။
အောက်ပါအခြေအနေများမှသက်ဆိုင်:
ကြီးမားသော XML ဖိုင်များကိုမှတ်ဉာဏ် - အထိခိုက်မခံသောအပြောင်းအလဲများ,
Real Network Streams တွင် XML data parse xml ဒေတာ;
XML tags များကိုအကာအကွယ်ဒဏ်ငွေထိန်းချုပ်ရန်လိုအပ်သည့်အခြေအနေများလိုအပ်သည်။
အကယ်. သင်သည်ရှုပ်ထွေးသော XML အဆောက်အအုံများကိုကိုင်တွယ်ရန်လိုအပ်သည့်စနစ်တစ်ခုကိုတည်ဆောက်ရန်လိုအပ်ပါကသင်ထင်သည်ထက်ပိုမိုထိရောက်သောနှင့်ထိန်းချုပ်နိုင်သောဤ SAX parsing method ကိုစမ်းကြည့်ရန်အကြံပြုသည်။