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

XML_PARSSE တွင်မမှန်ကန်သော XML tags များကိုကိုင်တွယ်ဖြေရှင်းရန်နှင့်ပြင်ဆင်နည်း

M66 2025-04-28

PHP ၏ XML_Parse () function ကို အသုံးပြု. XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါမှားယွင်းသောသို့မဟုတ်ပုံပျက်သော XML tags များကြောင့်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်မကြာခဏပျက်ကွက်တတ်သည်။ ဤအခြေအနေသည်အသုံးပြုသူများမှ 0 င်ရောက်သည့် XML ကြိုးများသို့မဟုတ်အရိုက်ခံရသည့်သတင်းရင်းမြစ်များမှအချက်အလက်များ (တတိယပါတီများတင်ထားသောပြင်ပ APIs ကဲ့သို့သော) အချက်အလက်များမှအချက်အလက်များ, ဤဆောင်းပါးသည်ဤအမှားများကိုလျောက်ပတ်စွာမည်သို့ကိုင်တွယ်ရမည်ကိုရှင်းပြပါလိမ့်မည်။

1 ။ XML_Parse () အလုပ်လုပ်ပုံကိုနားလည်ပါ

XML_Parse () သည် PHP ၏ XML Parser (Expat စာကြည့်တိုက်ကို အခြေခံ. ) XML data ကိုအခြေခံလမ်းဖြင့်ဖော်ပြသော XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်ခွဲထုတ်ခြင်း၏အစိတ်အပိုင်းဖြစ်သည်။

 $parser = xml_parser_create();
xml_parse($parser, $xmlString, true);
xml_parser_free($parser);

အကယ် . XML $ XMLString တွင် XMLString သည်မမှန်ကန်ပါက function သည် မှားယွင်းသော အမှားအယွင်းများကိုပြန်ပို့လိမ့် မည်

2 ။ ဘုံမမှန်ကန်သော XML ပြ problems နာများ

  1. တံဆိပ်မပိတ်ထားပါ

     <note><to>Tove</to><from>Jani</note>
    
  2. အထူးအက္ခရာများသည်မလွတ်လျငြိမ်နိုင်ပါ။

     <message>5 < 10 & 7 > 3</message>
    
  3. ခွင့်ပြုချက်မရှိဘဲစာလုံးများသို့မဟုတ်တရားမဝင် encodings

  4. မှားယွင်းတဲ့အသိုက်ဖွဲ့စည်းပုံ

3 ။ အလိုအလျောက်ပြုပြင်မဟာဗျူဟာ

သင်စံမဟုတ်သောသို့မဟုတ်အကျင့်ပျက် XML ကိုကိုင်တွယ်ရန်လိုအပ်သည့်အခါသင် Preprocess လုပ်ရန်နည်းဗျူဟာအချို့ကိုသုံးနိုင်သည်။

1 ။ libxml မှပေးသောသည်းခံစိတ် parsing ကိုအသုံးပြုရန်ကြိုးစားပါ

PHP ၏ DomDocument လူတန်းစားသည် XML ကိုတင်သောအခါအမှားအယွင်းများကိုပိတ်ထားရန်ခွင့်ပြုသည်။

 libxml_use_internal_errors(true);

$doc = new DOMDocument();
$success = $doc->loadXML($xmlString);

if (!$success) {
    foreach (libxml_get_errors() as $error) {
        echo "အကြံပြုချက်များကိုပြုပြင်ပါ:" . $error->message . "\n";
    }
    libxml_clear_errors();
}

ဒီနည်းလမ်းကိုမသတ်မှတ်နိုင်ပေမဲ့ဘာမှားသွားတာလဲဆိုတာမင်းကိုပြောပြနိုင်တယ်။

2 ။ ကိုယ်တိုင်ကိုယ်ကျဘုံပြ problems နာများကိုဖြေရှင်းရန် (ဥပမာစာလုံးများ)

XML ၏ဖွဲ့စည်းပုံကိုသင်သိပါက၎င်းကိုပုံမှန်သို့မဟုတ် string အစားထိုးခြင်းဖြင့်၎င်းကိုပြင်ဆင်နိုင်သည်။

 function sanitizeXml($xml) {
    // တရားမဝင်အစားထိုးပါ & လူသူမ
    $xml = preg_replace('/&(?!amp;|lt;|gt;|quot;|apos;)/', '&amp;', $xml);

    // အခြားစည်းမျဉ်းများကိုလိုအပ်သလိုပြီးစီးနိုင်သည်
    return $xml;
}

3 ။ အမှားအယွင်းများကိုဖမ်းခြင်းနှင့်အပြောင်းအလဲနဲ့အဆင့်မြှင့်

XML parsing ကို function တစ်ခုတွင်ခွဲခြမ်းစိတ်ဖြာနိုင်ပြီးအပြောင်းအလဲများနည်းပါးခြင်း,

 function safeXmlParse($xmlString) {
    $parser = xml_parser_create();

    if (!xml_parse($parser, $xmlString, true)) {
        $error = xml_error_string(xml_get_error_code($parser));
        $line = xml_get_current_line_number($parser);
        error_log("XMLခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: $error at line $line");

        // မလုပ်မနေရမဟုတ်သော:အုပ်ချုပ်ရေးမှူးအားအကြောင်းကြားပါသို့မဟုတ်မှတ်တမ်းကိုကျော်ပါ
        return false;
    }

    xml_parser_free($parser);
    return true;
}

4 ။ လက်တွေ့ကျသောကိစ္စရပ်များ

သင် XML data ကို url data မှ url data မှရရှိသည်ဆိုပါစို့

 $url = "https://api.m66.net/feed";
$xmlData = file_get_contents($url);
$xmlData = sanitizeXml($xmlData);

if (!safeXmlParse($xmlData)) {
    echo "ဒီခွဲခြမ်းစိတ်ဖြာနိုင်ခြင်း XML အချက်များ,logged。\n";
} else {
    echo "XML အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ!\n";
}

5 ။ သိကောင်းစရာများ - ပြင်ပကိရိယာများကို အသုံးပြု. Preprocess

အထူးသဖြင့် XML ကိုရှုပ်ထွေးစေရန်အတွက် သပ်သပ်ရပ်ရပ် , Xmllint သို့မဟုတ် Python ၏ လှပမှုများ ကဲ့သို့သောပြင်ပကိရိယာများကိုသန့်ရှင်းရေးလုပ်ရန်နှင့် PHP သို့တင်သွင်းရန်အတွက် PHP သို့တင်သွင်းနိုင်သည်။

အကျဉ်းချုပ်

XML ခွဲခြမ်းစိတ်ဖြာအမှားများကိုကိုင်တွယ်ရန်သော့ချက်သည် preprocessing + အမှားသည်းခံစိတ်မှု + အမှားသည်းခံစိတ်ပြန်လည်နာလန်ထူရေးယန္တရားတွင်ရှိသည်။ XML_Parse () သည်အခြေခံကျသော်လည်းတင်းကြပ်သော XML parsing method ဖြစ်သော်လည်း၎င်းသည် dom, libxml, manual ပြုပြင်ရေးမဟာဗျူဟာများနှင့်အခြားနည်းလမ်းများနှင့်မမှန်မကန် XML နှင့်လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်နိုင်သည်။

နောက်တစ်ခါသင် "လျှို့ဝှက်ဆန်းကြယ်သော xml ခွဲခြမ်းစိတ်ဖြာပျက်ကွက်ခြင်း" ကိုသင်ရင်ဆိုင်နေရသည်။