PHP တွင် XML_Parse function ကို အသုံးပြု. XML function ကို pars parse parse par par perplication တစ်ခုဖြစ်ပါတယ် ။ ဤဆောင်းပါးသည်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်တွေ့ရသောဘုံပြ problems နာများစွာကိုစူးစမ်းလေ့လာပြီး XML ကိုအထူးအက္ခရာများနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုရှောင်ရှားရန်သက်ဆိုင်ရာဖြေရှင်းနည်းများကိုဖြည့်ဆည်းပေးလိမ့်မည်။
XML သည်အက္ခရာများသည်တရားဝင် UTF-8 အက္ခရာများဖြစ်ရမည်ဟုလိုအပ်သည်။ အကယ် . input တွင်တရားမ 0 င်အက္ခရာများပါ 0 င်ပါက,
အကြောင်းအရာကိုကြိုတင်ကြည့်ရှုရန် iconv သို့မဟုတ် mb_convert_encoding ကို သုံးပါ။
$rawXml = file_get_contents('https://m66.net/data.xml');
$cleanXml = mb_convert_encoding($rawXml, 'UTF-8', 'UTF-8');
သို့မဟုတ်တရားမ 0 င်ထိန်းချုပ်မှုစာလုံးများကိုပုံမှန်အသုံးပြုပါ။
$cleanXml = preg_replace('/[^\x09\x0A\x0D\x20-\x7E\xA0-\xFF]/', '', $rawXml);
XML တွင် နှင့် ASPP ရေးသားထားရမည်။ ။ အကယ်. မူရင်း XML စာရွက်စာတမ်းတွင် unescaped မပါ 0 င်ပါ က XML_Parse သည် အမှားတစ်ခုသတင်းပို့လိမ့်မည်။
preprocessing အတွက် htmlspecialchars သို့မဟုတ် strow_replace ကို သုံးနိုင်သည်။ သို့သော်အလွန်အကျွံလွတ်မြောက်ရန်တားဆီးရန်သတိထားပါ။
$cleanXml = str_replace('&', '&', $rawXml);
// မှတ်သား:ဒါကဥပမာတစ်ခုပဲ,၎င်းကိုအသုံးပြုသောအခါ, သင်ကလွတ်မြောက်ခြင်းရှိမရှိဆုံးဖြတ်ရမည်။,ထပ်ခါတလဲလဲလွတ်မြောက်ခြင်းကိုရှောင်ကြဉ်ပါ
ပိုမိုလုံခြုံသောနည်းလမ်းမှာ XML သည်တရားဝင်ဖြစ်ကြောင်းအတည်ပြုရန်ဖြစ်သည်။
libxml_use_internal_errors(true);
$xml = simplexml_load_string($rawXml);
if (!$xml) {
foreach (libxml_get_errors() as $error) {
echo "XML Error: " . $error->message;
}
}
အကယ်. XML ဖိုင် header သည် encoding ကိုမဖော်ပြထားပါကသို့မဟုတ်အမှန်တကယ် encoding နှင့်မကိုက်ညီပါက XML_PERSSER အမှားတစ်ခုဖြစ်နိုင်သည်။
တသမတ်တည်း encoding ကိုသေချာစေရန်စံ header ကို XML သို့အတင်းဖိအားပေးပါ -
if (strpos($rawXml, '<?xml') === false) {
$rawXml = '<?xml version="1.0" encoding="UTF-8"?>' . $rawXml;
}
developer များသည်တစ်ခါတစ်ရံတွင် XML_Parser_Free ကို ခေါ်ရန်မေ့နေပြီးအရင်းအမြစ်ယိုစိမ့်မှုသို့မဟုတ်ပုံမှန်မဟုတ်သောအပြုအမူများကိုဖြစ်ပေါ်စေသည်။
$parser = xml_parser_create('UTF-8');
xml_set_element_handler($parser, 'startElement', 'endElement');
xml_set_character_data_handler($parser, 'characterData');
if (!xml_parse($parser, $cleanXml, true)) {
die(sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
xml_parser_free($parser);
ပုံမှန်အားဖြင့် XML_Parse တွင် အမှားတစ်ခုဖြစ်ပေါ်ပြီးနောက်ခြွင်းချက်များကိုမည်သည့်ခြွင်းချက်မချနိုင်ပါ။ အမှားသတင်းအချက်အလက်များကိုကိုယ်တိုင်စစ်ဆေးရန်လိုအပ်သည်။
XML_Get_error_code () နှင့် xml_error_String () နှင့် XML_ERROROR_STRING ()) နှင့် XML_ERROROR_STRINGREND () ကိုအသုံးပြုပါ။
XML_PARSE သည်အခြေခံနှင့်ကောင်းမွန်စွာလုပ်ဆောင်နိုင်သည့်ပုံစံဖြစ်သော်လည်း၎င်းကိုအသုံးပြုသောအခါ XML ၏တရားဝင်မှုနှင့်ဇာတ်ကောင် encoding ဆိုင်ရာပြ issues နာများကိုသင်အလွန်သတိထားရမည်။ ကြိုတင်သန့်ရှင်းရေးလုပ်ရန်ကျွန်ုပ်တို့အကြံပြုလိုသည်။
ပိုမိုရှုပ်ထွေးသော XML ဖွဲ့စည်းတည်ဆောက်ပုံနှင့်လိုအပ်ချက်များပိုမိုများပြားလာပါကအထူးအက္ခရာများကိုပိုမိုသည်းခံတတ်သူများနှင့်ပိုမိုထိရောက်သော DomDocument သို့မဟုတ် Simplexml ကဲ့သို့သောခေတ်မီခွဲခြမ်းစိတ်ဖြာကိရိယာများကို အသုံးပြု. အသုံးပြုရန်နှင့်အသုံးပြုရန်ပိုမိုကောင်းမွန်သောအသုံးပြုမှုကိုသုံးနိုင်သည်။