XML ဖိုင်များနှင့်အလုပ်လုပ်စဉ်ဖိုင်တစ်ခုလုံးသည်အလွန်ကြီးမားသည်ဆိုလျှင်ဖိုင်တစ်ခုလုံးကို memory ထဲသို့ထည့်ရန်လက်တွေ့မကျပါ (ဥပမာ, MB သို့မဟုတ် GB) ဤအချိန်တွင် PHP ၏ XML_PRESSSE function ကို အသုံးပြု. စာဖတ်နေစဉ် ခွဲခြမ်းစိတ်ဖြာခြင်း အားဖြင့်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုနားလည်သဘောပေါက်ရန် PHP ၏ XML_PLYSE function ကိုအသုံးပြုနိုင်သည်။
XML_Parse နှင့် fopen ကို အသုံးပြု. ကြီးမားသော XML ဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်း၏ပြည့်စုံသောဥပမာတစ်ခုဖြစ်သည်။
<?php
// တည်ဆောက်သည် XML ဖိုင်လမ်းကြောင်း(ဒီမှာအသုံးပြုခဲ့သည် m66.net ဒိုမိန်းအမည်များ၏ဥပမာများ)
$xmlFile = 'https://m66.net/data/large-file.xml';
// ဖန်တီး XML မိစ်ဆာ
$parser = xml_parser_create();
// start tag processing လုပ်ဆောင်မှုကိုသတ်မှတ်ပါ
function startElement($parser, $name, $attrs) {
echo "Element ကိုစတင်ပါ: $name\n";
if (!empty($attrs)) {
foreach ($attrs as $key => $value) {
echo " - ဉစ်စာပစ္စည်းများ: $key = $value\n";
}
}
}
// အဆုံး tag processing လုပ်ဆောင်မှုကိုသတ်မှတ်ပါ
function endElement($parser, $name) {
echo "Ender: $name\n";
}
// ဇာတ်ကောင်ဒေတာအပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်များကိုသတ်မှတ်ပါ
function characterData($parser, $data) {
$data = trim($data);
if ($data !== '') {
echo "ဇာတ်ကောင်ဒေတာ: $data\n";
}
}
// တည်ဆောက်သည်处理函数
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
// ဖွင့်လှစ် XML ဖိုင်များကို streaming
if (!($fp = fopen($xmlFile, "r"))) {
die("无法ဖွင့်လှစ် XML စာချုပ်စာတမ်း: $xmlFile");
}
while ($data = fread($fp, 4096)) {
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);
xml_parser_free($parser);
?>
FOPEN + Thead : ဝေးလံခေါင်သီသောဖိုင်များကိုဖွင့်ရန် fopen ကို သုံးပါ။ အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားရန် Free သည် 4096 bytes ကိုဖတ်ရှုနိုင်သည်။
XML_Parser_Create : XML parser အရင်းအမြစ်ကိုဖန်တီးသည်။
XML_EsST_ELEMEMEMET_HANDLER : Start နှင့် End tags များ၏လုပ်ဆောင်မှုလုပ်ဆောင်မှုကိုမှတ်ပုံတင်ပါ။
XML_set_Character_Data_Handler : ဇာတ်ကောင်အချက်အလက်များကိုမှတ်ပုံတင်ခြင်းအတွက်လုပ်ဆောင်ခြင်းလုပ်ဆောင်ချက်။
XML_Parse - စာဖတ်ခြင်း XML ဒေတာလုပ်ကွက်များကိုဖတ်ရန်, ခေါ်ဆိုမှုများစွာကိုထောက်ပံ့ပေးပြီး streaming streaming လုပ်ရန်သင့်လျော်သည်။
ကြီးမားသောဒေတာဖလှယ်မှုအတွက် XML ဖိုင်များ
Webs Brawlers အားဖြင့်ဖမ်းမိ XML ဒေတာများကိုစနစ်တကျစီစဉ်ထားသည်
Logging စနစ်များသို့မဟုတ် configuration systems ၏ XML အခြေပြုအသုတ်ခွဲခြမ်းစိတ်ဖြာခြင်း