လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML_PARSSE XML parsing သည့်အခါ "XML ခွဲခြမ်းစိတ်ဖူးမှုမအောင်မြင်" အမှားအယွင်းများပေါ်လာသည်

XML_PARSSE XML parsing သည့်အခါ "XML ခွဲခြမ်းစိတ်ဖူးမှုမအောင်မြင်" အမှားအယွင်းများပေါ်လာသည်

M66 2025-04-26

PHP ၏ XML_Parse () function ကို အသုံးပြု. XML အချက်အလက်များကို parml ဒေတာကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည် "XML parsing မအောင်မြင်သော" အမှားကိုခွဲထုတ်သည့်အခါ developer များစွာသည်ဘုံပြ problem နာတစ်ခုနှင့်ကြုံတွေ့ရသည်။ အထူးသဖြင့်ကောင်းမွန်သောပုံသဏ္ဌာန်ရှိသော XML အကြောင်းအရာများကိုကိုင်တွယ်ဖြေရှင်းပုံရသည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုနက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာပြီးထိရောက်သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။

1 ။ XML_Parse ဆိုတာဘာလဲ () ?

XML_Parse () သည် PHP ရှိ XML parser extension ၏အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီး Expat XML parser စာကြည့်တိုက်တွင် Expat-driven parsing အတွက်မူတည်သည်။ XML သည် XML Standard နှင့်အပြည့်အဝလိုက်နာရန်လိုအပ်ကြောင်း,

Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool xml_parse(resource $parser, string $data, bool $is_final)

parameter သည်ဖော်ပြချက်:

  • $ Parser - XML_Parser_Create () မှဖန်တီးထားသော parser အရင်းအမြစ်တစ်ခု။

  • $ ဒေတာ - ခွဲခြမ်းစိတ်ဖြာရန် XML ဒေတာ။

  • $ is_final : ၎င်းသည်နောက်ဆုံးအချက်အလက်များသည်ရှိမရှိဖော်ပြသည်။

2 ။ "XML ခွဲခြမ်းစိတ်ဖူးမှုမအောင်မြင်သောအကြောင်းရင်းများ"

1 ။ XML သည်စံပုံစံများနှင့်မကိုက်ညီပါ

အသုံးအများဆုံးပြ problem နာမှာ XML ကိုယ်တိုင်ကမမှန်ကန်ပါ။ ဥပမာအားဖြင့်:

  • တံဆိပ်မပိတ်ပါ

  • တရားမဝင်သောဇာတ်ကောင်များ (ထိုကဲ့သို့သော အဖြစ် မှန်ကန်စွာနှင့် amp မှလွတ်မြောက်ရန်မလွတ်မြောက်ခြင်း) ကိုအသုံးပြုခဲ့သည်။

  • ဥပမာအားဖြင့်ကြေငြာချက်အမှားအယွင်းများ,

 $xml = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don\'t forget me this weekend.</note>';

အထက်ဖော်ပြပါဥပမာတွင်ပျောက်ဆုံးနေသော </ body> tag သည်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုဖြစ်ပေါ်စေလိမ့်မည်။

2 ။ မတိုက်ဆိုင် coding

အကယ်. XML ကြေငြာချက်သည် UTF-8 ကိုအသုံးပြုသော်လည်း UTF-8 encoded ဇာတ်ကောင်များပါ 0 င်သည်။

 <?xml version="1.0" encoding="UTF-8"?>

အကယ်. အကြောင်းအရာတွင် GBK-encoded ဇာတ်ကောင်များပါ 0 င်ပါကအမှားတစ်ခုဖြစ်ပြီး၎င်းတို့သည် UTF-8 ဖြစ်ကြောင်းဖော်ပြသည်။

3 ။ ကွန်ယက်သို့မဟုတ်ဖိုင်ကိုဖတ်ရှုလျှင်အကြောင်းအရာမပြည့်စုံပါ

အကယ်. သင်သည် XML အကြောင်းအရာများကို URL (သို့) ဖိုင်မှတဆင့်ဖတ်ပါကစာဖတ်ခြင်းသည်ပျက်ကွက်ခြင်းသို့မဟုတ်တစ်စိတ်တစ်ပိုင်းအချက်အလက်များကိုသာဖတ်ရသည်, ၎င်းသည်ပျက်ကွက်မှုဖြစ်စေသည်။

 $url = 'https://m66.net/data/feed.xml';
$xmlData = file_get_contents($url);

if ($xmlData === false) {
    die("ဖတ် XML ဆုံးရှုံး");
}

4 ။ $ is_final ကို မှန်ကန်စွာစစ်မှန်တဲ့မသတ်မှတ်ထားပါ

xml ကို segms ကျယ်ကျယ်ပြန့်ပြန့်ဖတ်သည့်အခါတတိယ parameter $ is_final is_final () XML_PARSE () ကို နောက်ဆုံးခေါ်ဆိုမှုတွင် မှန်ကန်စွာ သတ်မှတ်သင့်သည်။ မသတ်မှတ်ပါက၎င်းသည် "resolution မပြည့်စုံသော" အမှားတစ်ခုဖြစ်ပေါ်လိမ့်မည်။

3 ။ ဒီပြ problem နာကိုဖြေရှင်းပြီးဘယ်လိုဖြေရှင်းနည်းလဲ။

1 ။ XML_Get_error_code () နှင့် xml_error_string () ကိုသုံးပါ

ဤလုပ်ဆောင်ချက်များသည်သင့်အားခွဲခြမ်းစိတ်ဖြာခြင်းအမှားများ၏အဓိကအကြောင်းရင်းများကိုရှာဖွေရန်ကူညီနိုင်သည်။

 $parser = xml_parser_create();
if (!xml_parse($parser, $xml, true)) {
    $errorCode = xml_get_error_code($parser);
    $errorMessage = xml_error_string($errorCode);
    $line = xml_get_current_line_number($parser);
    $column = xml_get_current_column_number($parser);
    echo "XML parsing failed: $errorMessage at line $line, column $column";
}
xml_parser_free($parser);

2 ။ သင့်လျော်သောအယ်ဒီတာနှင့်အတူ XML format ကိုစစ်ဆေးပါ

XML verification ကိုထောက်ပံ့သောအယ်ဒီတာများကိုအသုံးပြုရန် (ထိုကဲ့သို့သော VS Code, Sublime Tepmad ++) သို့မဟုတ်ကြိုတင်အတည်ပြုခြင်းအတွက်အွန်လိုင်းကိရိယာများ - https://m66.net/tools/xml-Validatorator

3 ။ အက်ခရာ encoding တသမတ်တည်းကြောင်းသေချာပါစေ

XML ကြေငြာချက်တွင် encoding သည်အမှန်တကယ် encoding နှင့်ကိုက်ညီကြောင်းအမြဲတမ်းသေချာပါစေ။ ဖိုင်များကိုသိမ်းဆည်းသောအခါ UTF-8 encoding ကိုအကြံပြုပြီးအတိအလင်းသတ်မှတ်ထားသည်။

4 ။ ကွန်ယက်ခြွင်းချက်များကိုကိုင်တွယ်ပါ

အကယ်. XML အရင်းအမြစ်သည်အဝေးမှ URL တစ်ခုဖြစ်ပါကတောင်းဆိုမှုသည်ပထမဆုံးအကြိမ်အောင်မြင်မှုရှိ, မရှိစစ်ဆေးရန်အကြံပြုသည်။

 $url = 'https://m66.net/api/xml';
$xml = @file_get_contents($url);

if ($xml === false) {
    die("ဝေးလံခေါင်သီရရန်မရပါ XML အချက်များ");
}

4 ။ အကြံပြုထားသောအခြားနည်းလမ်းများ - Simplexml သို့မဟုတ် DomDocument ကိုသုံးပါ

မူရင်း XML_Parse () ()) နှင့်နှိုင်းယှဉ်ပါက PHP သည်ပိုမိုခေတ်မီပြီးပိုမိုလွယ်ကူသော XML parsing method ကိုထောက်ပံ့ပေးသည်။

 $xml = simplexml_load_string($xmlData);
if ($xml === false) {
    echo "SimpleXML 解析ဆုံးရှုံး";
}

သို့မဟုတ် domdocument ကို သုံးပါ။

 $dom = new DOMDocument();
$success = $dom->loadXML($xmlData);
if (!$success) {
    echo "DOMDocument 解析ဆုံးရှုံး";
}

နည်းလမ်းနှစ်ခုစလုံးသည်ပိုမိုလွယ်ကူသောအမှားများကိုပိုမိုလွယ်ကူစေပြီး XML node များကိုပိုမိုလွယ်ကူစေသည်။

ကောက်ချက်

"XML ခွဲခြမ်းစိတ်ဖူးမှုမအောင်မြင်သော" အမှားများဖြစ်သော်လည်း၎င်းသည်နောက်ကွယ်ရှိအကြောင်းပြချက်များကိုစနစ်တကျစစ်ဆေးခြင်းမှတစ်ဆင့်ရှင်းလင်းစွာစစ်ဆေးနိုင်သည်။ XML format နှင့် encoding နှင့် tools များကိုအသုံးပြုခြင်းကိုနားလည်ခြင်းနှင့်အောက်ပါတို့ကိုနားလည်ခြင်းနှင့်အောက်ပါတို့သည်ခွဲခြမ်းစိတ်ဖြာခြင်း၏အောင်မြင်မှုနှုန်းကိုတိုးတက်စေနိုင်သည်။ ထို့အပြင်ပိုမိုခေတ်မီ XML parsing tools များကိုအသုံးပြုခြင်းကိုစဉ်းစားခြင်းအားဖြင့်ဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်ကိုပိုမိုထိရောက်စွာတည်ငြိမ်စေနိုင်သည်။

အကယ်. သင်သည် Remote XML interfaces များကိုမကြာခဏကိုင်တွယ်လျှင်, အထက်ပါရှာဖွေတွေ့ရှိမှုဆိုင်ရာယုတ္တိဗေဒကိုလုပ်ဆောင်ချက်များတွင်ပါ 0 င်စေပြီးအားသာချက်များတိုးတက်စေရန်စီမံကိန်းတွင်ပြန်လည်အသုံးပြုနိုင်သည်။

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