လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> fopen နှင့်ပေါင်းစပ်ထားသော XML_Parse မှတဆင့်ကြီးမားသောဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းဥပမာ

fopen နှင့်ပေါင်းစပ်ထားသော XML_Parse မှတဆင့်ကြီးမားသောဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းဥပမာ

M66 2025-05-13

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);
?>

ဥပမာ -

  1. FOPEN + Thead : ဝေးလံခေါင်သီသောဖိုင်များကိုဖွင့်ရန် fopen ကို သုံးပါ။ အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားရန် Free သည် 4096 bytes ကိုဖတ်ရှုနိုင်သည်။

  2. XML_Parser_Create : XML parser အရင်းအမြစ်ကိုဖန်တီးသည်။

  3. XML_EsST_ELEMEMEMET_HANDLER : Start နှင့် End tags များ၏လုပ်ဆောင်မှုလုပ်ဆောင်မှုကိုမှတ်ပုံတင်ပါ။

  4. XML_set_Character_Data_Handler : ဇာတ်ကောင်အချက်အလက်များကိုမှတ်ပုံတင်ခြင်းအတွက်လုပ်ဆောင်ခြင်းလုပ်ဆောင်ချက်။

  5. XML_Parse - စာဖတ်ခြင်း XML ဒေတာလုပ်ကွက်များကိုဖတ်ရန်, ခေါ်ဆိုမှုများစွာကိုထောက်ပံ့ပေးပြီး streaming streaming လုပ်ရန်သင့်လျော်သည်။

ကြည့်ရှုပါ။

  • ကြီးမားသောဒေတာဖလှယ်မှုအတွက် XML ဖိုင်များ

  • Webs Brawlers အားဖြင့်ဖမ်းမိ XML ဒေတာများကိုစနစ်တကျစီစဉ်ထားသည်

  • Logging စနစ်များသို့မဟုတ် configuration systems ၏ XML အခြေပြုအသုတ်ခွဲခြမ်းစိတ်ဖြာခြင်း

ဆက်စပ်အကြောင်းအရာ