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 ။ ဤပေါင်းစပ်မှုသည်ခွဲခြမ်းစိတ်ဖြာခြင်းစွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။