XML ဒေတာများကိုလုပ်ဆောင်သည့်အခါကျွန်ုပ်တို့သည် "ဆူညံသံဆိုင်ရာသတင်းအချက်အလက်" အချို့ကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည် - CDATA တွင်အသိုက်မရှိသောတရားမ 0 င်သောဇာတ်ကောင်များ, ဒေတာခွဲခြမ်းစိတ်ဖြာမှု၏တိကျမှန်ကန်မှုကိုသေချာစေရန် PHP ၏ XML_Parse function ကို အသုံးပြု. PHP ၏ XML_Parse function ကို အသုံးပြု. ဤ 0 င်ရောက်စွက်ဖက်မှုများကိုရှင်းလင်းရန်နှင့်ခွဲခြမ်းစိတ်ဖြာမှုနှင့်အချက်အလက်များယုံကြည်စိတ်ချရမှုနှင့်အချက်အလက်များယုံကြည်စိတ်ချရမှုနှင့်အချက်အလက်များဆိုင်ရာယုံကြည်စိတ်ချမှုနှင့်အချက်အလက်များအားယုံကြည်စိတ်ချမှုနှင့်အချက်အလက်များယုံကြည်စိတ်ချမှုနှင့်အချက်အလက်များယုံကြည်စိတ်ချမှုနှင့်အချက်အလက်များဆိုင်ရာထိရောက်မှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
XML_Parse သည် PHP မှပေးသော PHP မှပေးသော PHP မှပေးသော PHP မှပေးသော XML parser ဖြစ်သည်။ XML strings segment ကို segment နှင့် process node များဖြင့်စာပြန်ခေါ်လုပ်ဆောင်မှုများမှတဆင့်စာဝှက်ခြင်းဖြင့်ဖတ်ရှုနိုင်သည်။ သို့သော် XML_Parse သည် XML format အတွက်အလွန်မြင့်မားသောလိုအပ်ချက်များရှိသည်။ အကယ်. တရားမ 0 င်သောဇာတ်ကောင်များသို့မဟုတ် XML ရှိအမှားအယွင်းများရှိပါက၎င်းသည်ပျက်ကွက်မှုသို့တိုက်ရိုက်ပြန်ပို့လိမ့်မည်။
ဥပမာအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$xml_data = file_get_contents("https://m66.net/sample.xml");
if (!xml_parse($xml_parser, $xml_data, true)) {
die("XML ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: " . xml_error_string(xml_get_error_code($xml_parser)));
}
xml_parser_free($xml_parser);
function startElement($parser, $name, $attrs) {
echo "Element ကိုစတင်ပါ: $name\n";
}
function endElement($parser, $name) {
echo "Ender: $name\n";
}
function characterData($parser, $data) {
echo "ဒေတာအကြောင်းအရာ: $data\n";
}
ဤကုဒ်သည် Remote XML ကိုဖတ်ပြီး tag နှင့် data node node ကိုအဆင့်တစ်ဆင့်ပြုလုပ်ရန် callback function ကိုအသုံးပြုသည်။ သို့သော် XML တွင်တရားမ 0 င်စာလုံးများပါ 0 င်ပါက,
XML_PPYSE ကို ကောင်းမွန်စွာအလုပ်လုပ်ရန် XML ရှိဆူညံသံသတင်းအချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းမပြုမီသန့်ရှင်းရမည်။ ၎င်းကိုပုံမှန်အသုံးအနှုန်းများဖြင့်ထိရောက်စွာလုပ်ဆောင်နိုင်သည်။ ဘုံ "ဆူညံသံ" တွင်:
ထိန်းချုပ်မှုဇာတ်ကောင် (ဥပမာ ascii 0-31)
တရားမဝင် HTML မှတ်ချက်များ (ဥပမာ <! -----> scripts)
nested မှားယွင်းသော tags များ
အပို Whitespace သို့မဟုတ်လိုင်းချိုး
ဤတွင်အချို့သော processing ဥပမာအချို့ကိုကြည့်ပါ။
function cleanXmlData($xml) {
// တရားမဝင်ထိန်းချုပ်မှုဇာတ်ကောင်ဖယ်ရှားပါ
$xml = preg_replace('/[^\x09\x0A\x0D\x20-\x7E\xA0-\xFF]/u', '', $xml);
// မှတ်ချက်အကြောင်းအရာကိုဖယ်ရှားပါ
$xml = preg_replace('/<!--.*?-->/s', '', $xml);
// မမှန်ကန်သောအချည်းနှီးသော tag format ကိုအစားထိုးပါ
$xml = preg_replace('/<(\w+)[^>]*>\s*<\/\1>/', '', $xml);
// သန့်ရှင်းရေးလုပ်သည် CDATA script ကိုဖျောက်သို့မဟုတ်အတွက်ပါဝင်ဆောင်ရွက်
$xml = preg_replace('/<!\[CDATA\[(.*?)\]\]>/s', function($matches) {
$content = $matches[1];
// အကြောင်းအရာလိုအပ်သည့်အတိုင်း filtered နိုင်ပါတယ်,ဥပမာအားဖြင့်, ဖယ်ရှားပါ <script>
$content = preg_replace('/<script.*?>.*?<\/script>/is', '', $content);
return "<![CDATA[$content]]>";
}, $xml);
return $xml;
}
သန့်ရှင်းရေးအဆင့်များနှင့် xml parser ပေါင်းစပ်ခြင်း -
$raw_xml = file_get_contents("https://m66.net/raw-feed.xml");
$clean_xml = cleanXmlData($raw_xml);
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $clean_xml, true)) {
die("သန့်ရှင်းရေးလုပ်သည်后 XML ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: " . xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);
ဤနည်းအားဖြင့်မူရင်း XML ဖိုင်တွင်ဆူညံသောသတင်းအချက်အလက်များရှိလျှင်ပင်လျှင်စနစ်တည်ငြိမ်မှုကိုသန့်ရှင်းရေးပြုလုပ်ပြီးနောက်အောင်မြင်စွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်။
XML_Parse ၏သန့်ရှင်းရေးနည်းစနစ်များကိုပေါင်းစပ်ပြီးပုံမှန်အသုံးအနှုန်းများသည် XML ဒေတာများကိုပြုပြင်ရန်ကျွန်ုပ်တို့၏အမှားသည်းခံမှုကိုများစွာတိုးတက်စေနိုင်သည်။ ပုံမှန်ဖွဲ့စည်းထားသော "ညစ်ပတ်သော" dirty "ဒေတာများကိုအားနည်းစေနိုင်သည် ။ ဒီနှစ်ခုပေါင်းစပ်မှုသည် log ခွဲခြမ်းစိတ်ဖြာခြင်း, ဒေတာစုဆောင်းခြင်း, API Gateways စသည့်စနစ်အခြေအနေများအတွက်သင့်တော်သည်။
အမြဲတမ်းသတိရပါ - ဒေတာအသုံးချခြင်းသည်အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာရန်ပထမခြေလှမ်းဖြစ်သည်။