လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> parsing အမှားများကိုဖမ်းယူရန် XML_Parse နှင့် XML_GEget_Eruor ကိုသုံးပါ

parsing အမှားများကိုဖမ်းယူရန် XML_Parse နှင့် XML_GEget_Eruor ကိုသုံးပါ

M66 2025-04-28

PHP တွင် XML အချက်အလက်များကိုထုတ်လုပ်သည့်အခါ XML string ကို XML_Parse function ကို အသုံးပြု. ခွဲခြမ်းစိတ်ဖြာနိုင်သည်။ သို့သော် XML ဖိုင်များသည်မှားယွင်းသောအမှတ်အသားများသို့မဟုတ်ဇာတ်ကောင် encoding အမှားများကဲ့သို့သော formating ပြ problems နာများရှိသည်။ ၎င်းသည်မအောင်မြင်မှုများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤအမှားများကိုကြည့်ရှုရန်နှင့်ကိုင်တွယ်ရန် Xml_parse , XML_Anget_error_code , XML_ERRORROR_STRORTRING, XML_ERRORR_CRETRINGSA နှင့် XML_ERGORT_CURRENT_LINE_NAMERS_NAMERS ကဲ့သို့သောလုပ်ဆောင်မှုများကိုအသုံးပြုနိုင်သည်။

XML parsing အမှားများကိုရှာဖွေရန်နှင့်အစီရင်ခံရန်ဤလုပ်ငန်းဆောင်တာများကိုမည်သို့အသုံးပြုရမည်ကိုအပြည့်အဝကြည့်ရှုကြရအောင်။

ဥပမာ - XML ​​parsing အမှားများကိုဖမ်းယူခြင်း

 <?php
// အမှားတစ်ခုပုံဖော်ပါ XML ကြိုး(ပျောက်ဆုံးနေသောတံခါးပိတ်)
$xmlData = <<<XML
<note>
    <to>အသုံးပြုသူ</to>
    <from>အုပ်ချုပ်သူ</from>
    <heading>သတိပေး</heading>
    <body>ဒါကစမ်းသပ်မှုသတင်းစကားပါ
</note>
XML;

// ဖန်တီး XML မိစ်ဆာ
$parser = xml_parser_create();

// 设置မိစ်ဆာ选项
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); // Label Case ကိုသိမ်းထားပါ
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);   // whitespace ဇာတ်ကောင်လျစ်လျူရှု

// ခွဲခြမ်းစိတ်ဖြာရန်ကြိုးစားပါ XML အချက်များ
if (!xml_parse($parser, $xmlData, true)) {
    $errorCode = xml_get_error_code($parser);
    $errorMessage = xml_error_string($errorCode);
    $lineNumber = xml_get_current_line_number($parser);
    
    echo "? သုံးသပ်ကြည့်ရှုခြင်း XML အမှားတစ်ခုဖြစ်ပွားခဲ့သည်:\n";
    echo "အမှားသတင်းစကား:$errorMessage\n";
    echo "အမှားကုဒ်:$errorCode\n";
    echo "အမှားအမည်:$lineNumber\n";

    // အမှားသစ်ထုတ်လုပ်ခြင်း,或者引导အသုံးပြုသူ查看帮助页面
    // နမူနာ:မှတ်တမ်းတင်ရန်အမှားများကိုမှတ်တမ်းတင်ပါ
    error_log("XML သုံးသပ်ကြည့်ရှုခြင်း错误:$errorMessage အတွက် $lineNumber အိုကေ", 3, "/var/log/xml_errors.log");

    // သို့မဟုတ်အကူအညီ link ကိုပြပါ
    echo "ကျေးဇူးပြု. အကူအညီစာရွက်စာတမ်းကိုကြည့်ပါ:https://m66.net/xml/help\n";
} else {
    echo "? XML သုံးသပ်ကြည့်ရှုခြင်း成功!\n";
}

// 释放မိစ်ဆာ资源
xml_parser_free($parser);
?>

သုံးသပ်ကြည့်ရှု

  1. xml_parser_create ()
    XML parser အရင်းအမြစ်ကိုနောက်ပိုင်းတွင် XML ကြိုးများကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသည်။

  2. xml_parse ()
    ထောက်ပံ့ပေး XML string ကို pareses ။ ခွဲခြမ်းစိတ်ဖြာခြင်းပျက်ကွက်လျှင် မှားယွင်းစွာ ပြန်လာ၏။

  3. XML_GEget_error_code () / xml_error_string ()
    အမှားကုဒ်ကိုရယူပါ။ ၎င်းကိုဖတ်နိုင်သောအမှားသတင်းအချက်အလက်သို့ပြောင်းပါ။

  4. xml_get_current_line_number_number_number_number
    အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါပြ problems နာများကိုမြန်မြန်ဆန်ဆန်အနေအထားကိုလွယ်ကူချောမွေ့စေသည့်အခါလိုင်းနံပါတ်ကိုရယူပါ။

  5. xml_parser_Free ()
    Memory ယိုစိမ့်မှုများကိုရှောင်ရှားရန်ခွဲခြမ်းစိတ်ဖြာပြီးနောက်အရင်းအမြစ်များကိုဖြန့်ချိပါ။

လျှောက်လွှာဇာတ်လမ်းတစ်ပုဒ်

ဤနည်းလမ်းသည်အောက်ပါအခြေအနေများအတွက်အလွန်သင့်တော်သည်။

  • အသုံးပြုသူများသည် XML ဖိုင်များကို upload ပြုလုပ်သည့်အခါ format စစ်ဆေးခြင်း,

  • Fault Propertant လုပ်ခြင်းသည်တတိယပါတီ၏ interface သည် XML ဒေတာများကိုပြန်ပို့သောအခါ,

  • အလိုအလျောက်ဒေတာတင်သွင်းမှုစနစ်တွင်ယုတ္တိဗေဒကိုကြိုတင်စစ်ဆေးခြင်း,

  • အွန်လိုင်းတည်းဖြတ်သူအတွက် XML format ကိုလက်ငင်းစစ်ဆေးပါ။

အကြံပေးချက်များ

  • DOM သို့မဟုတ် Simplexml တို့ဖြင့် libxml extensions များကိုအသုံးပြုခြင်းသည်ပိုမိုအဆင့်မြင့်သော XML စစ်ဆင်ရေးနည်းလမ်းများဖြစ်သည်

  • ပြင်ပ XML အချက်အလက်များကိုတိုက်ရိုက်မယုံကြည်ပါနှင့်။ အမှားအယွင်းများကို format လုပ်ခြင်းအပြင်၎င်းကိုအန္တရာယ်ရှိသောအဖွဲ့အစည်းများ (XXE တိုက်ခိုက်မှုများ) သို့လည်းထိုးသွင်းနိုင်သည်။ Entity parsing function ကိုပိတ်ရန်သတိရပါ။