PHP တွင် XML ဒေတာများကို PHP တွင်ထုတ်လုပ်သည့်အခါ XML_Parse () သည် xml ဒေတာများကိုဖွဲ့စည်းထားသောသတင်းအချက်အလက်များကိုဖွဲ့စည်းရန်ကူညီပေးသောဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်မမှန်မကန်, မှားယွင်းသောပုံစံသို့မဟုတ် unclosed xml data အချို့နှင့်ရင်ဆိုင်ရသောအခါဤလုပ်ဆောင်ချက်သည်အမှားအယွင်းများကိုအလွယ်တကူပစ်နိုင်သည်, အစီအစဉ်တစ်ခုလုံးကိုပြတ်တောက်စေနိုင်သည်။
XML_Parse () အထူးသဖြင့်မမှန်မကန် xml ကိုကြုံတွေ့ရချိန်တွင်အမှားအယွင်းများကိုအသုံးပြုခြင်းသည်အမှားအယွင်းများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။ ဤတွင်အချို့သောလက်တွေ့ကျသောအကြံပြုချက်များနှင့်ကုဒ်နမူနာအချို့ကိုဖော်ပြထားသည်။
XML_PARSE () မသုံးမီ (), ပရိုဂရမ်ကိုတိတ်တဆိတ်မအောင်မြင်ဘဲခွဲစိတ်ကုသမှုမအောင်မြင်သည့်အခါအထူးသီးသန့်အမှားအချက်အလက်များကိုဖမ်းယူနိုင်ရန်အတွက်အမှားရှာဖွေရန်အတွက်အမှားရှာဖွေရန်အမြဲတမ်းအမှားရှာဖွေရန်ကိုဖမ်းယူနိုင်ရန်အကြံပြုသည်။
$xml = '<root><item>အချက်များ1<item><item>အချက်များ2</item></root>'; // မမှန်သောXML
$parser = xml_parser_create();
xml_set_error_code($parser, XML_ERROR_NONE);
if (!xml_parse($parser, $xml, true)) {
$errorCode = xml_get_error_code($parser);
$errorMsg = xml_error_string($errorCode);
$line = xml_get_current_line_number($parser);
$column = xml_get_current_column_number($parser);
echo "အမှားခွဲခြမ်းစိတ်ဖြာခြင်း:$errorMsg အတွက် $line အိုကေ,1 ။ $column စာရင်း\n";
}
xml_parser_free($parser);
မမှန်မကန် XML ကိုပိုမိုလုံခြုံစွာထိန်းထားနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်ဒေတာများကိုကြိုတင်မသုံးရန် LibxMl ၏ အမှားအယွင်းခံထားသောနည်းလမ်းကိုသုံးနိုင်သည် ။
libxml_use_internal_errors(true);
$xml = '<root><item>အချက်များ1<item><item>အချက်များ2</item></root>';
$dom = new DOMDocument();
$dom->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING | LIBXML_NONET | LIBXML_COMPACT | LIBXML_NOCDATA);
if (!$dom) {
foreach (libxml_get_errors() as $error) {
echo "LibXML အမှား:{$error->message}\n";
}
libxml_clear_errors();
} else {
echo "XML အောင်မြင်စွာတင်,ခွဲခြမ်းစိတ်ဖြာရန်ဆက်လက်နိုင်ပါတယ်。\n";
}
တခါတရံတွင်ဒေတာအရင်းအမြစ်သည်မတည်ငြိမ်မှုဖြစ်သည့်ပြင်ပ APIs ကဲ့သို့သောပြင်ပ APIs များကဲ့သို့ http://api.m66.net/data.xml ကဲ့သို့ပင်။ ဤကိစ္စတွင်ကျွန်ုပ်တို့သည်ပုံမှန် (သို့) လက်စွဲနည်းစနစ်များကို အသုံးပြု. unclosed tags များသို့မဟုတ်တရားမဝင်သောဇာတ်ကောင်များကဲ့သို့သောဘုံပြ problems နာများကို ဦး စွာဖြေရှင်းနိုင်သည်။
$xml = file_get_contents('http://api.m66.net/data.xml');
// ရိုးရှင်းသော fix:unclosed tags တွေကိုအစားထိုးလိုက်ပါ
$xml = preg_replace('/<item>([^<]*)<item>/', '<item>$1</item><item>', $xml);
// 然后再进အိုကေ解析
$parser = xml_parser_create();
if (!xml_parse($parser, $xml, true)) {
echo "နေဆဲတည်ရှိ XML အမှား,၎င်းကိုကိုင်တွယ်ရန်အခြားနည်းလမ်းများကိုကြိုးစားပါ。\n";
}
xml_parser_free($parser);
?? မှတ်စု: ဤနည်းလမ်းသည်အခြေအနေတွင်မျှော်လင့်ချက်အချို့ရှိသည့်အခြေအနေများအတွက်သင့်လျော်သည်။
တစ်ခါတစ်ရံကိရိယာတစ်ခုပြောင်းလဲခြင်းသည် ပို. တည်ငြိမ်သည်။ ဥပမာအားဖြင့် Simplexml တွင်အားကောင်းသောအမှားသည်းခံမှုနှင့်ပိုမိုလွယ်ကူသည့်ကုဒ်များရှိသည်။
$xml = file_get_contents('http://api.m66.net/data.xml');
libxml_use_internal_errors(true);
$simpleXml = simplexml_load_string($xml);
if ($simpleXml === false) {
echo "SimpleXML ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ,အမှား如下:\n";
foreach (libxml_get_errors() as $error) {
echo $error->message;
}
} else {
echo "SimpleXML အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ!\n";
}
XML_Parse ကို သုံးသောအခါမမှန်မကန် XML ကိုရင်ဆိုင်ရန်အကောင်းဆုံးအလေ့အကျင့်များ -
ပြ problems နာများကိုလွယ်ကူချောမွေ့စေရန်အမှားအယွင်းများကိုဖွင့်ပါ။
preprocessing အဖြစ် libxml အမှား - သည်းခံစိတ် parsing ကိုသုံးပါ။
လိုအပ်ပါက XML ကိုပြုပြင်ရန်ပုံမှန်သို့မဟုတ် domdocument ကိုသုံးပါ။
အကယ်. အချက်အလက်ပုံစံသည်ထိန်းချုပ်မှုမထိန်းချုပ်နိုင်ပါကပိုမိုကောင်းမွန်သောအမှားခံနိုင်ရည်ရှိသောခွဲစိတ်ကုသမှုမျိုးကိုပိုမိုအသုံးပြုပါ။
XML format သည်ကျိုးကြောင်းဆီလျော်ပြီး XML_PARSE () ကို အသုံးပြု. XML_Parse () ကို အသုံးပြု. ကုဒ်ကိုတိုးတက်အောင်လုပ်နိုင်ပြီး 0 န်ဆောင်မှုတစ်ခုလုံးကိုဖြိုခွဲခြင်းကြောင့်အမှားခံနိုင်ရည်ကိုရှောင်ရှားနိုင်လိမ့်မည်။
ဤအကြံပြုချက်များသည်သင့်အား "လှည့်ကွက်" XML ဒေတာအမျိုးမျိုးကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည်ဟုမျှော်လင့်ပါသည်။ အကယ်. သင်သည်သီးခြားခွဲခြမ်းစိတ်ဖြာအမှားများကိုသင်ကြုံတွေ့ရပါက XML အကြောင်းအရာများကို post နိုင်သည်။ သင့်အတွက်၎င်းကိုခွဲခြမ်းစိတ်ဖြာနိုင်သည်
သက်ဆိုင်သောတက်(ဂ်)များ:
xml_parse