လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> xml_set_default_handler နှင့်ဒေတာများကိုလုပ်ဆောင်ရန် XML_SESSES_END_ENDOFT_DECTCL_Handler ကိုအသုံးပြုနည်း။

xml_set_default_handler နှင့်ဒေတာများကိုလုပ်ဆောင်ရန် XML_SESSES_END_ENDOFT_DECTCL_Handler ကိုအသုံးပြုနည်း။

gitbox 2025-05-20

PHP တွင် XML ဖိုင်များကို PHP တွင်ပြုပြင်သည့်အခါ, XML_SESS_END_Ennamespace_Decl_Handler သည် namespace ကြေငြာချက်၏အဆုံးကိုကိုင်တွယ်ရန်အသုံးပြုသော callback function ကိုဖြစ်သည်။ ၎င်းသည်အခြားပိုမိုတိကျသောအဖြစ်အပျက်များနှင့်မသက်ဆိုင်သောအကြောင်းအရာများကိုပိုမိုကောင်းမွန်သောဖမ်းယူနိုင်ပြီးစီမံခန့်ခွဲနိုင်သည်။

ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုနှစ်ခု၏အသုံးပြုမှုအခြေအနေများကိုမိတ်ဆက်ပေးပြီးထိရောက်သော namespace ပြုပြင်ထုတ်လုပ်မှုကိုရရှိရန်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်သူတို့မည်သို့အတူတကွလုပ်ဆောင်သည်ကိုပြသရန်ကုဒ်များဥပမာများကိုအသုံးပြုပါမည်။

အခြေခံသဘောတရားများ

  • xml_set_Default_Handler (အရင်းအမြစ် $ parser, callable functler) - အခြားပရိုဆက်ဆာ function ကိုမခေါ်ပါကပုံမှန်ပရိုဆက်ဆာသည်လက်ရှိ XML ဒေတာများကိုလုပ်ဆောင်လိမ့်မည်။ ၎င်းသည်များသောအားဖြင့်စာသား node များသို့မဟုတ်မသတ်မှတ်ထားသောအကြောင်းအရာများကိုလုပ်ဆောင်ရန်အသုံးပြုသည်။

  • XML_SESS_END_Nnamespace_Decl_handler (အရင်းအမြစ် $ parser, callable $ handler) - namespace ကြေငြာချက်၏အဆုံးနှင့်ပရိုဆက်ဆာကိုမှတ်ပုံတင်ပါ။ namespace နယ်ပယ်အဆုံးသတ်သောအခါဤ callback function ကိုဖြစ်ပေါ်စေသည်။

ကြည့်ရှုပါ

xml ဖိုင်များကို namespace မျိုးစုံဖြင့်ခွဲခြမ်းစိတ်ဖြာသောအခါ, namespace ၏နယ်ပယ်သည်မကြာခဏပြောင်းလဲသွားသည်။ ဒေတာအမှားများကိုရှောင်ရှားရန်ဤအပြောင်းအလဲများကိုကျွန်ုပ်တို့စောင့်ကြည့်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်ဆပ်ပြာ, RSS သို့မဟုတ် Custom XML protocol တွင် Namespace ကို element ကိုသတ်မှတ်ပြီးကလေး node များနှင့်အလွှာဖြင့်အလွှာဖြင့်အလွှာမှအလွှာမှထွက်လာသည်။ အကယ်. namespace ကိုစနစ်တကျကိုင်တွယ်ခြင်းမရှိသေးပါကမမှန်ကန်သောဒေတာမြေပုံသို့မဟုတ်ယုတ္တိဆိုင်ရာဆုံးဖြတ်ချက်များပေါ်ပေါက်လာနိုင်သည်။

နမူနာကုဒ်

 <?php
$xml = <<<XML
<root xmlns:h="http://gitbox.net/ns/hello" xmlns:f="http://gitbox.net/ns/foo">
  <h:message>Hello</h:message>
  <f:data>World</f:data>
</root>
XML;

$parser = xml_parser_create_ns();

// စာသား node များ process
function defaultHandler($parser, $data) {
    echo "Default handler: {$data}\n";
}

// namespace အဆုံးအပြောင်းအလဲနဲ့
function endNamespaceDeclHandler($parser, $prefix) {
    echo "Namespace end: " . ($prefix !== '' ? $prefix : '[default]') . "\n";
}

xml_set_default_handler($parser, 'defaultHandler');
xml_set_end_namespace_decl_handler($parser, 'endNamespaceDeclHandler');

// အခြားလိုအပ်သောပရိုဆက်ဆာများကိုသတ်မှတ်ပါ
xml_set_element_handler($parser,
    function ($parser, $name, $attrs) {
        echo "Start element: $name\n";
    },
    function ($parser, $name) {
        echo "End element: $name\n";
    }
);

// namespace parsing ကို enable
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);

if (!xml_parse($parser, $xml, true)) {
    echo "XML Error: " . xml_error_string(xml_get_error_code($parser));
}

xml_parser_free($parser);
?>

ထုတ်လုပ်မှုဥပမာ

 Start element: h:message
Default handler: Hello
End element: h:message
Namespace end: h
Start element: f:data
Default handler: World
End element: f:data
Namespace end: f

ခွဲခြမ်းစိတ်ဖြာခြင်းညွှန်ကြားချက်များ

  • <h: message> နှင့် <f: <f: data> tags များကိုရိုက်ထည့်သောအခါသက်ဆိုင်ရာ namespace ကိုသက်ဝင်လှုပ်ရှားသည်။

  • Defaulthandler သည် tags များအကြားစာသား node များကိုဖမ်းယူသည်။

  • Developer များကို Namespace အခြေအနေ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် DeveloperS ကိုသန့် ရှင်း ရေးလုပ်ခြင်းသို့မဟုတ်သစ်ထုတ်လုပ်ရေးလုပ်ငန်းများကိုပြုလုပ်ရန်ခွင့်ပြုသည်။

အကျဉ်းချုပ်

XML_Set_Default_Handler နှင့် XML_set_Ennamnes_Decl_Handler ကို ပေါင်းစပ်ခြင်းဖြင့် developer များက XML parsing လုပ်ငန်းစဉ်ကိုအထူးသဖြင့် multi-namespace ပတ်ဝန်းကျင်ကိုကိုင်တွယ်ရာတွင် granularularly controls ။ ဤပေါင်းစပ်မှုသည်ခွဲခြမ်းစိတ်ဖြာခြင်းစွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။