PHP ၏ XML_Parse () function ကို အသုံးပြု. XML အချက်အလက်များကို parml ဒေတာကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည် "XML parsing မအောင်မြင်သော" အမှားကိုခွဲထုတ်သည့်အခါ developer များစွာသည်ဘုံပြ problem နာတစ်ခုနှင့်ကြုံတွေ့ရသည်။ အထူးသဖြင့်ကောင်းမွန်သောပုံသဏ္ဌာန်ရှိသော XML အကြောင်းအရာများကိုကိုင်တွယ်ဖြေရှင်းပုံရသည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုနက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာပြီးထိရောက်သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
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 : ၎င်းသည်နောက်ဆုံးအချက်အလက်များသည်ရှိမရှိဖော်ပြသည်။
အသုံးအများဆုံးပြ problem နာမှာ XML ကိုယ်တိုင်ကမမှန်ကန်ပါ။ ဥပမာအားဖြင့်:
တံဆိပ်မပိတ်ပါ
တရားမဝင်သောဇာတ်ကောင်များ (ထိုကဲ့သို့သော အဖြစ် မှန်ကန်စွာနှင့် amp မှလွတ်မြောက်ရန်မလွတ်မြောက်ခြင်း) ကိုအသုံးပြုခဲ့သည်။
ဥပမာအားဖြင့်ကြေငြာချက်အမှားအယွင်းများ,
$xml = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don\'t forget me this weekend.</note>';
အထက်ဖော်ပြပါဥပမာတွင်ပျောက်ဆုံးနေသော </ body> tag သည်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုဖြစ်ပေါ်စေလိမ့်မည်။
အကယ်. XML ကြေငြာချက်သည် UTF-8 ကိုအသုံးပြုသော်လည်း UTF-8 encoded ဇာတ်ကောင်များပါ 0 င်သည်။
<?xml version="1.0" encoding="UTF-8"?>
အကယ်. အကြောင်းအရာတွင် GBK-encoded ဇာတ်ကောင်များပါ 0 င်ပါကအမှားတစ်ခုဖြစ်ပြီး၎င်းတို့သည် UTF-8 ဖြစ်ကြောင်းဖော်ပြသည်။
အကယ်. သင်သည် XML အကြောင်းအရာများကို URL (သို့) ဖိုင်မှတဆင့်ဖတ်ပါကစာဖတ်ခြင်းသည်ပျက်ကွက်ခြင်းသို့မဟုတ်တစ်စိတ်တစ်ပိုင်းအချက်အလက်များကိုသာဖတ်ရသည်, ၎င်းသည်ပျက်ကွက်မှုဖြစ်စေသည်။
$url = 'https://m66.net/data/feed.xml';
$xmlData = file_get_contents($url);
if ($xmlData === false) {
die("ဖတ် XML ဆုံးရှုံး");
}
xml ကို segms ကျယ်ကျယ်ပြန့်ပြန့်ဖတ်သည့်အခါတတိယ parameter $ is_final is_final () XML_PARSE () ကို နောက်ဆုံးခေါ်ဆိုမှုတွင် မှန်ကန်စွာ သတ်မှတ်သင့်သည်။ မသတ်မှတ်ပါက၎င်းသည် "resolution မပြည့်စုံသော" အမှားတစ်ခုဖြစ်ပေါ်လိမ့်မည်။
ဤလုပ်ဆောင်ချက်များသည်သင့်အားခွဲခြမ်းစိတ်ဖြာခြင်းအမှားများ၏အဓိကအကြောင်းရင်းများကိုရှာဖွေရန်ကူညီနိုင်သည်။
$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);
XML verification ကိုထောက်ပံ့သောအယ်ဒီတာများကိုအသုံးပြုရန် (ထိုကဲ့သို့သော VS Code, Sublime Tepmad ++) သို့မဟုတ်ကြိုတင်အတည်ပြုခြင်းအတွက်အွန်လိုင်းကိရိယာများ - https://m66.net/tools/xml-Validatorator
XML ကြေငြာချက်တွင် encoding သည်အမှန်တကယ် encoding နှင့်ကိုက်ညီကြောင်းအမြဲတမ်းသေချာပါစေ။ ဖိုင်များကိုသိမ်းဆည်းသောအခါ UTF-8 encoding ကိုအကြံပြုပြီးအတိအလင်းသတ်မှတ်ထားသည်။
အကယ်. XML အရင်းအမြစ်သည်အဝေးမှ URL တစ်ခုဖြစ်ပါကတောင်းဆိုမှုသည်ပထမဆုံးအကြိမ်အောင်မြင်မှုရှိ, မရှိစစ်ဆေးရန်အကြံပြုသည်။
$url = 'https://m66.net/api/xml';
$xml = @file_get_contents($url);
if ($xml === false) {
die("ဝေးလံခေါင်သီရရန်မရပါ XML အချက်များ");
}
မူရင်း 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 င်စေပြီးအားသာချက်များတိုးတက်စေရန်စီမံကိန်းတွင်ပြန်လည်အသုံးပြုနိုင်သည်။