PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးသဖြင့် atalchronous တောင်းဆိုမှုများကိုပြုလုပ်သောတောင်းဆိုမှုများကိုပြုလုပ်သောအခါ (asynchronously အချက်အလက်များရရန်ဆံပင်ကောက်ကောက်ကဲ့သို့) ကျွန်ုပ်တို့သည်ဒေတာများကိုလက်ခံရရှိပြီး XML_Parse နှင့်ခွဲခြမ်းစိတ်ဖြာရန်ကြိုးစားသည်။ သို့သော် developer များစွာသည် XML_Parse သည် မျှော်လင့်ထားသည့်အတိုင်းအမြဲတမ်းအလုပ်လုပ်ခြင်းမရှိကြောင်းနှင့်အမှားအယွင်းများကိုအစီရင်ခံခြင်းသို့မဟုတ်အချည်းနှီးသောအချက်အလက်များကိုပြန်ပို့ခြင်းများပြုလုပ်နိုင်သည့်အမှန်တကယ် applices များ၌ developer များစွာကိုတွေ့ရှိခဲ့သည်။ ဒီတော့ဘာဖြစ်လို့ဒီလိုဖြစ်ရတာလဲ။
ဤဆောင်းပါးသည် XML_Parse ကို အသုံးပြု. XML_Parse ကို အသုံးပြု. XML_Parse ကို အသုံးပြု. XML_Parse ကို အသုံးပြု. ဖြေရှင်းနည်းများကိုခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။
PHP တွင် XML_Parse သည် XML ကို အခြေခံ. XML_PRESSER_CEEDED_Handler နှင့် XML_SEST_ELECTE_Handler နှင့် XML_SESSET_Handler တို့နှင့်အသုံးပြုသည်။ ဥပမာအားဖြင့်:
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$data = file_get_contents("https://m66.net/api/data.xml");
if (!xml_parse($xml_parser, $data, true)) {
die(sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
xml_parser_free($xml_parser);
ထပ်တူထပ်မျှဝန်းကျင်တွင်ဤကုဒ်သည်ကောင်းမွန်စွာအလုပ်လုပ်သော်လည်းမကြာခဏပြတ်တောင်းပြတ်တောင်းခေါ်ဆိုမှုများတွင်မကြာခဏဖြစ်ပေါ်လေ့ရှိသည်။
allynchronous တောင်းဆိုမှုများသည်အပြည့်အ 0 ပြန်လာသောအချက်အလက်များကိုအပြည့်အ 0 ပြန်ပို့ခြင်းမရှိဘဲစတင်လုပ်ဆောင်လေ့ရှိသည် ။
ပြတ်တောင်းပြတ်တောင်းသောတုံ့ပြန်မှုများကိုကိုင်တွယ်သောအခါအချက်အလက်သမာဓိရှိမှုများကိုသေချာစေရန်နှင့်လိုအပ်ပါကလိုအပ်ပါကလိုအပ်ပါကလိုအပ်ပါက cache သို့မဟုတ်နှောင့်နှေးပြုပြင်ထုတ်လုပ်မှုယန္တရားများကိုသုံးပါ။
function onXmlDataReceived($data) {
if (strpos($data, '</root>') === false) {
// XML ဒီတစ်ခါလည်းအပြည့်အဝမပြန်ပါဘူး
return;
}
$parser = xml_parser_create();
xml_parse($parser, $data, true);
xml_parser_free($parser);
}
များစွာသော XML interfaces သည် UTF-8 encoded content ကိုပြန်ပို့ပါ။ PHP ၏မူလ internal encoding သည် UTF-8 မဖြစ်နိုင်ပါ။ အကယ်. encoding သည်ယူနီဖောင်းမဟုတ်လျှင် XML_Parse သည် အမှားတစ်ခုသတင်းပို့နိုင်သည်။
parser ကိုဖန်တီးသည့်အခါ encoding ကိုသတ်မှတ်ပါ, သို့မဟုတ် XML ကိုယ်တိုင်ကမှန်ကန်သော encoding format ကိုကြေငြာရန်သေချာစေပါ။
$parser = xml_parser_create('UTF-8');
သို့မဟုတ် encoding နှင့်ပြောင်းလဲခြင်းပထမ ဦး ဆုံးလုပ်ပါ:
$data = mb_convert_encoding($data, 'UTF-8', 'auto');
ဆံပင်ကောက်ကောက်ကို အသုံးပြု. (curl_multi_ * function function function function) ကဲ့သို့သောပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်နိုင်သည်။
curl_multi_add_handle($mh, $ch);
// အဆိုပါ callback အတွက် parser သို့မဟုတ်အခြားအခြေအနေကိုကျော်ဖြတ်ဖို့မေ့လျော့
class XmlParserContext {
public $parser;
public $data = '';
public function __construct() {
$this->parser = xml_parser_create();
xml_set_element_handler($this->parser, "startElement", "endElement");
xml_set_character_data_handler($this->parser, "characterData");
}
public function parse() {
xml_parse($this->parser, $this->data, true);
xml_parser_free($this->parser);
}
}
XML_Parse ကိုယ်တိုင်ကခြွင်းချက် များကို မပစ်နိုင်ပါ။ ၎င်းသည် boolean value ကိုသာပြန်ပေးလိမ့်မည် ။ အမှားအယွင်းများကိုရှင်းလင်းစွာကိုင်တွယ်ခြင်းသည်အလွယ်တကူရှာဖွေရန်ခက်ခဲနိုင်သည်။
if (!xml_parse($parser, $data, true)) {
error_log("XML Parse Error: " . xml_error_string(xml_get_error_code($parser)));
}
XML_Parse သည် xml ကိုအောက်ခြေတွင်ကိုင်တွယ်ရန်ဂန္ထဝင်နည်းလမ်းတစ်ခုဖြစ်သည်။ Simplexml သို့မဟုတ် DomdoCots ကို အသုံးပြု. allynchronous တောင်းဆိုမှုများတွင် Simplexml သို့မဟုတ် Domdocument ကို အသုံးပြု. ပိုမိုခိုင်မာသည့်နှင့်စုံစုံဖြစ်နိုင်သည်။
$xml = simplexml_load_string($data);
foreach ($xml->item as $item) {
echo $item->title;
}
သို့မဟုတ်:
$dom = new DOMDocument();
$dom->loadXML($data);
$items = $dom->getElementsByTagName('item');
XML_Parse ကို အသုံးပြု. allynchronous တောင်းဆိုမှုများတွင် XML ဒေတာများကိုပြုလုပ်ရန် XML ဒေတာများကိုပြုလုပ်ရန်အတွက်သင်သည်မပြည့်စုံသောဒေတာများ, အကယ်. XML_Parse လိုအပ်ပါကဒေတာသမာဓိစစ်ဆေးခြင်းနှင့်အခြေအနေစီမံခန့်ခွဲမှုကိုပိုမိုအားကောင်းသင့်သည်။ ဒီလိုမှမဟုတ်ရင် allynchronous ပတ်ဝန်းကျင်မှာပိုပြီးအမှားခံနိုင်ရည်ရှိပြီးစာဖတ်တတ်တဲ့ Simplexml ဒါမှမဟုတ် domdocument စတဲ့အဆင့်မြင့် XML parsing tools တွေကိုသုံးဖို့အကြံပြုထားပါတယ်။
သက်ဆိုင်သောတက်(ဂ်)များ:
xml_parse