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

libxml_use_internal_Error များ သုံး. XML အမှားများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

gitbox 2025-06-06

PHP တွင် XML ဖိုင်များကိုထုတ်ယူသောအခါအထူးသဖြင့် XML သည်မပြည့်စုံသောသို့မဟုတ်မမှန်ကန်ပါကမမှန်မကန်ဖြစ်သည့်အခါခွဲခြမ်းစိတ်ဖြာခြင်းအမှားများကိုမကြာခဏတွေ့ရသည်။ ပုံမှန်အားဖြင့် LibxMl extension သည်အမှားအယွင်းများကိုဖြည့်ဆည်းပေးနိုင်သည့်သို့မဟုတ်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုပြန့်စွာဖြစ်ပေါ်စေနိုင်သည်။ ဤအမှားများကိုလျောက်ပတ်စွာဖမ်းရန် PHP သည် LibxMl_use_internal_Internal_Errors function ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်အမှားအယွင်းများကိုစုဆောင်းရန်နှင့်တိုက်ရိုက် output ကိုရှောင်ရှားရန်ခွင့်ပြုသည်

ဤဆောင်းပါးသည် LibxMl_use_internal_Enters ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြပြီးအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် XML parsing အမှားများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသရန်နမူနာကုဒ်ကိုပေါင်းစပ်ပါ။


libxml_use_internal_Errors ကဘာလဲ။

LibxMl_use_internal_Errors သည် PHP တွင် function တစ်ခုဖြစ်သည်။ Enabled ပြီးနောက် LibXML သည်အမှားအယွင်းများကိုတိုက်ရိုက်ထုတ်ယူလိမ့်မည်မဟုတ်ပါ, သို့သော်အမှားအချက်အလက်များကိုသိမ်းဆည်းလိမ့်မည်။ ပရိုဂရမ်သည်အခြားလုပ်ဆောင်မှုများကိုလုပ်ဆောင်ရန်အတွက်ဤအမှားများကိုရယူနိုင်သည်။

function ရှေ့ပြေးပုံစံ:

 bool libxml_use_internal_errors ([ bool $use_errors = true ] )
  • Parameter $ use_errors : အတွင်းပိုင်းအမှားကိုင်တွယ်မှုကိုဖွင့ ရန်ဖြစ်စေ,

  • ပြန်လာတန်ဖိုး - မခေါ်မီအမှားအယွင်းရှိအမှားအယွင်း (boolean value) အမှားအယွင်းရှိသည်။


အဘယ်ကြောင့် libxml_use_internal_Errors ကိုအဘယ်ကြောင့်အသုံးပြု?

ပုံမှန်အားဖြင့် XML ခွဲခြမ်းစိတ်ဖြာမှုမအောင်မြင်ပါကအမှားကိုတိုက်ရိုက်ပုံနှိပ်ထုတ်ဝေမည်, ၎င်းသည်စာမျက်နှာအပြင်အဆင်ကိုပျက်စီးစေပြီးအမှားအယွင်းများအပေါ်တွင်မထိန်းချုပ်နိုင်ပါ။

libxml_use_internal_errors (true) ကိုအသုံးပြုပြီးနောက် parsing အမှားများသည်တိုက်ရိုက်ထုတ်လွှင့်မည်မဟုတ်သော်လည်းသိုလှောင်ထားလိမ့်မည်။ အမှားစာရင်းကို LibxMl_get_Ergors () နှင့်ပုံစံများကိုရနိုင်သည်။


နမူနာကုဒ်: XML parsing အမှားများကိုဖမ်းယူနှင့်ကိုင်တွယ်

အောက်ပါဥပမာသည် XML ကြိုးများကိုခွဲထုတ်ရန် LibxMl_use_internal_Eruers များကို မည်သို့အသုံးပြုရမည်ကိုပြသသည်။

 <?php
// စွမ်းဆောင်နိုင်စေ libxml အတွင်းပိုင်းအမှားကိုင်တွယ်
libxml_use_internal_errors(true);

// ခွဲခြမ်းစိတ်ဖြာခံရဖို့ XML ကြိုး(မှားယွင်းစွာရေးသားခဲ့သည်)
$xmlString = <<<XML
<root>
    <item>Example</item
</root>
XML;

// အသစ်တစ်ခုကိုဖန်တီးပါ DOMDocument ကန့်ကွက်
$doc = new DOMDocument();

// တင်ရန်ကြိုးစားပါ XML ကြိုး
if (!$doc->loadXML($xmlString)) {
    echo "XML ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ,အမှားမက်ဆေ့ခ်ျကိုအောက်ပါအတိုင်းဖြစ်ပါတယ်:<br>";

    // Get နှင့် Travers
    $errors = libxml_get_errors();
    foreach ($errors as $error) {
        echo displayLibxmlError($error);
    }

    // ရှင်းလင်းသောအမှား cache ကို
    libxml_clear_errors();
} else {
    echo "XML အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ!";
}

/**
 * ပုံစံနှင့်ပြသခြင်း libxml အမှားသတင်းစကား
 *
 * @param LibXMLError $error
 * @return string
 */
function displayLibxmlError($error) {
    $return = "<br>";
    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
        case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }
    $return .= trim($error->message);
    $return .= " on line $error->line";
    return $return;
}
?>

အထက်ပါကုဒ်၌:

  • အမှားစုဆောင်းမှုကို enable လုပ်ရန် libxml_use_internal_Erues (true) ကို သုံးပါ။

  • DomDocument :: loadxml နှင့်အတူ XML ကိုတင်ပါ။ အကယ်. မအောင်မြင်ပါကအမှားတစ်ခုရရန် LibxMl_get_Erues ကို ဖုန်းဆက်ပါ။

  • Custom function displibxmlerror မှတဆင့် format နှင့် output error error error ။

  • ခွဲခြမ်းစိတ်ဖြာပြီးနောက် libxml_clear_Erclear_ErueRors () အမှားကြားခံကိုရှင်းလင်းရန် () ကိုခေါ်ပါ။


ဖိုင်တင်ခြင်းပေါင်းစပ်ခြင်းဥပမာ

အမှန်တကယ်စီမံကိန်းများတွင် XML ကိုအများအားဖြင့်ဖိုင်များမှဖတ်ရှုပြီးသင်အလားတူနည်းလမ်းများကိုသုံးနိုင်သည်။

 <?php
libxml_use_internal_errors(true);

$xmlFile = 'https://gitbox.net/example.xml';

$doc = new DOMDocument();

if (!$doc->load($xmlFile)) {
    echo "ဝန်တင် XML ဖိုင်မအောင်မြင်ပါ,အမှားအယွင်းများသည်အောက်ပါအတိုင်းဖြစ်သည်:<br>";
    foreach (libxml_get_errors() as $error) {
        echo displayLibxmlError($error);
    }
    libxml_clear_errors();
} else {
    echo "XML 文件ဝန်တင်成功。";
}

function displayLibxmlError($error) {
    $return = "<br>";
    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
        case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }
    $return .= trim($error->message);
    $return .= " on line $error->line";
    return $return;
}
?>

ဤနေရာတွင်လိုအပ်ချက်များနှင့်ကိုက်ညီသော Gitbox.net နှင့်အတူနမူနာ URL ရှိဒိုမိန်းအမည်ကိုအစားထိုးပါ။


အကျဉ်းချုပ်

  • libxml_use_internal_Errors (True) သည် XML parsing အမှားများကိုဖမ်းရန်သော့ချက်ဖြစ်သည်။

  • ၎င်းသည်အမှားအယွင်းများကိုတိုက်ရိုက်ထုတ်လွှင့်ခြင်းကိုရှောင်ရှားနိုင်ပြီးပရိုဂရမ်ထိန်းချုပ်မှုနှင့်သစ်ထုတ်လုပ်ရေးအတွက်အဆင်ပြေစေသည်။

  • LibxMl_get_Ergets () နှင့် libxml_cllear_clear_clears () ကိုထိရောက်စွာစီမံနိုင်သည်။

  • XML ကိုကြိုးများ, ဖိုင်များသို့မဟုတ်ဝေးလံခေါင်သီလိပ်စာများမှတင်ထားသည့်နေရာအမျိုးမျိုးအတွက်သင့်တော်သည်။

ဤလုပ်ဆောင်မှုကိုအသုံးပြုခြင်းသည် developer များပိုမိုခိုင်မာသည့်နှင့်ဖော်ရွေ XML processing code များကိုရေးရန်ကူညီနိုင်သည်။