PHP တွင် XML ကိုခွဲခြမ်းစိတ်ဖြာရန်သာမန်နည်းလမ်းများအနက်မှတစ်ခုမှာ XML_Parser_Create () နှင့်ဆက်စပ်သောလုပ်ဆောင်ချက်များကို XML_Parse () ကဲ့သို့သော XML_Parse () နှင့်ဆက်စပ်သောလုပ်ဆောင်မှုများကိုလိုင်းဖြင့်ပြုလုပ်ရန်ဖြစ်သည်။ သို့သော်, အကယ်. သင်သည်အရင်းအမြစ်များကိုထုတ်ပြန်ခြင်းကိုမပေးနိုင်ပါကအထူးသဖြင့်ကြီးမားသောဖိုင်များ (သို့) သွင်းအားစုများစွာကိုကိုင်တွယ်သောအခါမှတ်ဉာဏ်ယိုစိမ့်မှုများကိုဖြစ်ပေါ်စေနိုင်သည့် Memory Dialog ကိုဖြစ်ပေါ်စေပြီး,
ဤဆောင်းပါးသည်ပြ the နာများ၏အကြောင်းရင်းများကိုအတိုချုပ်မိတ်ဆက်ပေးပြီးမှတ်ဉာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်လုံခြုံစိတ်ချရသောနည်းလမ်းများပေးလိမ့်မည်။
အောက်ပါကုဒ်အတိုအထွာကိုစဉ်းစားပါ။
$parser = xml_parser_create();
$fp = fopen("https://m66.net/data.xml", "r");
while ($data = fgets($fp)) {
xml_parse($parser, $data, feof($fp));
}
fclose($fp);
// parser အရင်းအမြစ်များကိုလွှတ်ပေးရန်မေ့လျော့
ဤကုဒ်တွင် XML_Parse () သည် ဒေတာတစ်ခုစီကိုဖတ်ရှုသည့်အတိုင်းအရင်းအမြစ်များကိုစဉ်ဆက်မပြတ်ခွဲဝေချထားပေးလိမ့်မည်။ အကယ်. သင်သည် XML_Parser_FREE_FREE ($ parser) ကိုဖုန်းဆက်ရန်မေ့သွားပါကပရိုဂရမ်မှသိမ်းပိုက်ထားသောမှတ်ဉာဏ်ကိုထုတ်ပြန်ခြင်းသည်အထူးသဖြင့်ကြီးမားသောကြိမ်နှုန်းဖြင့်ကြီးမားသောသို့မဟုတ်မြင့်မားသောသို့မဟုတ်အဆင့်မြင့်သော XML တောင်းဆိုမှုများကိုကိုင်တွယ်သောအခါပိုမိုလေးနက်သည်။
မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်မှာတိုက်ရိုက်နှင့်လိုအပ်သောခြေလှမ်းမှာ XML_Parser_Free () ကို parser မလိုအပ်တော့သည့်အချိန်တွင်ဖြစ်သည်။
$parser = xml_parser_create();
// မလုပ်မနေရမဟုတ်သော:အပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်များကိုတက် setting
xml_set_element_handler($parser, "startElement", "endElement");
$fp = fopen("https://m66.net/data.xml", "r");
while ($data = fgets($fp)) {
if (!xml_parse($parser, $data, feof($fp))) {
die(sprintf("XML အမှား:%s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
}
fclose($fp);
// သင့်လျော်စွာ parser အရင်းအမြစ်များကိုလွှတ်ပေးရန်
xml_parser_free($parser);
Parser ၏ callback processing function သည် Node ကိုပြုပြင်ခြင်းပြီးဆုံးသွားသောအခါဒေတာများကိုချက်ချင်း အသုံးပြု. မရှိတော့ပါ။
function startElement($parser, $name, $attrs) {
// processing start tag
}
function endElement($parser, $name) {
// processing end tag
}
xml_set_element_handler($parser, "startElement", "endElement");
Fgets ()) ကို မသုံးပါကသင်တစ်ချိန်ကမှတ်ဉာဏ်များလွန်းခြင်းမှကာကွယ်ခြင်းမှကာကွယ်ရန်အချိန်တိုင်းတွင်ဖတ်ရန်အချိန်တိုင်းတွင်ဖတ်ရှုရန် () ကိုသုံးရန် () ကို သုံးနိုင်သည်။
while ($data = fread($fp, 4096)) {
xml_parse($parser, $data, feof($fp));
}
XMLReader သည်ပိုမိုခေတ်မီသော Pull-Schema-based XML parsing နည်းလမ်းဖြစ်သည်။ ၎င်းသည်စွမ်းဆောင်ရည်မြင့်မားရုံသာမက xml strame အပြောင်းအလဲများကိုကြီးမားသောအချက်အလက်ပမာဏနှင့်အတူသင့်လျော်သောသန့်စင်သောမှတ်ဉာဏ်စီမံခန့်ခွဲမှုပိုမိုများပြားသည်။
$reader = new XMLReader();
$reader->open("https://m66.net/data.xml");
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'item') {
// ကိုင်တွယ်ဖြေရှင်းသည် <item> node
}
}
$reader->close();
Multi-line XML ဒေတာများကိုပြုလုပ်ရန် XML_Parse ကိုအသုံးပြုသောအခါမှတ်ဥာဏ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်အချိန်အတွက် parser အရင်းအမြစ်များကိုအချိန်မီထုတ်ပြန်ရန်သတိရပါ။ အကြံပြုထားသည့်ချဉ်းကပ်နည်းသည်စွမ်းဆောင်ရည်နှင့်မှတ်ဉာဏ်ထိန်းချုပ်မှုအရပိုမိုကောင်းမွန်သော XMLReader ကဲ့သို့သောခေတ်မီခွဲခြမ်းစိတ်ဖြာနည်းများကိုအသုံးပြုရန်ဖြစ်သည်။ မည်သည့်နည်းလမ်းကိုအသုံးပြုပါစေအရင်းအမြစ်စီမံခန့်ခွဲမှုဆိုင်ရာကောင်းမွန်သောအရင်းအမြစ်သည် code အား 0 င်ရောက်မှုကိုသေချာစေရန်အတွက်အမြဲတမ်းသော့ချက်ဖြစ်သည်။
PHP တွင် XML မှတ်ဉာဏ်ပြ issues နာများကိုကိုင်တွယ်ရာတွင်ဤဆောင်းပါးသည်သင့်အတွက်အထောက်အကူပြုလိမ့်မည်ဟုမျှော်လင့်ပါ။