PHP တွင် XML_set_Ennamonface_Decl_Handler function ကို XML ခွဲခြမ်းစိတ်ဖြာသည့်အခါ Namespace ကိုအဆုံးသတ်သည့် callback function ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ XML ဖိုင်ကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုခွဲခြမ်းစိတ်ဖြာခြင်းတွင် namespace parsing အမှားများသို့မဟုတ်ပျက်ကွက်မှုများသည် namespace parsing အမှားများသို့မဟုတ်ပျက်ကွက်မှုဖြစ်နိုင်သည်။ အဆုံးကြေငြာချက်များကိုအောင်မြင်စွာခွဲခြမ်းစိတ်ဖြာနိုင်ရန်နှင့်လုပ်ငန်းစဉ်ဆိုင်ရာကြေငြာချက်များကိုအောင်မြင်စွာခွဲထုတ်ရန်ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါပေါ်ပေါက်လာသောဘုံပြ problems နာများကိုမည်သို့ဖြေရှင်းရမည်ကိုရှင်းပြပါမည်။
xml_set_Ennamespace_Decl_Handler function ကိုခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်း callback function ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ Namespace ကြေငြာချက်သည်ကွဲပြားသောဒြပ်စင်နှင့်ဂုဏ်သတ္တိများကိုခွဲခြားသည့် XML စာရွက်စာတမ်းတစ်ခုတွင်အမှတ်အသားတစ်ခုဖြစ်သည်။ XML ဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ Namespace ၏အဆုံးကိုမှန်ကန်စွာကိုင်တွယ်ခြင်းသည်စာရွက်စာတမ်းအားခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်မှန်ကန်စွာလည်ပတ်နိုင်ရန်အတွက်အရေးပါသည်။
bool xml_set_end_namespace_decl_handler ( resource $parser , callable $handler )
ဤလုပ်ဆောင်ချက်၏ parameters တွေကိုနှစ်ခုမှာ -
$ Parser : XML parser အရင်းအမြစ်။
$ handler - namespace ရဲ့အဆုံးကိုခွဲခြမ်းစိတ်ဖြာတဲ့အခါ callback function ကိုခေါ်။
အချို့သောကိစ္စရပ်များတွင် XML_SESS_END_ENNERNAMBAND_DECLLERLER ကို အသုံးပြုသောအခါ, သင်၏ namespace ကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာနိုင်သည့်အခြေအနေများကြုံတွေ့ရနိုင်သည်။ များသောအားဖြင့် XML document တစ်ခုတွင် namespace တစ်ခုကိုသတ်မှတ်သောအခါအောက်ပါပြ problems နာများရှိသည် -
namespace ရှေ့ဆက်သို့မဟုတ် URI အမှား - XML စာရွက်စာတမ်းများတွင် Namespace ရှေ့ဆက်တွင် uri ကိုမှားယွင်းစွာဖြင့်ချည်နှောင်ထားပြီး parser ကိုအဆုံးကြေငြာချက်ကိုမှန်ကန်စွာအသိအမှတ်ပြုရန်ပျက်ကွက်သည်။
namespace ကိုမှန်ကန်စွာမပိတ်ပါ ။ XML စာရွက်စာတမ်းရှိ Namespace သည်မှန်ကန်သောနည်းဖြင့်အဆုံးသတ်ခြင်းမရှိသေးပါ။
Callback function ကိုမှန်ကန်စွာမသတ်မှတ်ပါ ။ Callback function ကို xml_set_end_enD_Ennamespace_Decl_Handler အတွက်မှန်ကန်စွာမသတ်မှတ်ထားပါ။
xml_set_end_ennamespace_Decller function ကိုသုံးသောအခါ Namespace ကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာခြင်းမပြုနိုင်ပါကအောက်ပါအတိုင်း debug လုပ်ပြီးပြုပြင်ပြောင်းလဲနိုင်သည်။
ပထမ ဦး စွာ XML ဖိုင်တွင် Namespace ကြေငြာချက်များသည်စံသတ်မှတ်ချက်များနှင့်ကိုက်ညီကြောင်းသေချာအောင်လုပ်ပါ။ မှန်ကန်သော namespace ကြေငြာချက်တွင် namespace ၏ရှေ့ဆက်နှင့် URI တို့ပါ 0 င်သင့်သည်။ ဥပမာအားဖြင့်:
<root xmlns:ns="http://www.example.com/ns">
<ns:child>Content</ns:child>
</root>
ဤဥပမာတွင် NS NS သည် namespace ရှေ့ဆက်နှင့် http://www.example.com/ns သည် URI ဖြစ်သည်။ XML ဖိုင်တွင် namespace ကြေငြာချက်သည်ရှင်းလင်းပြီးမှန်ကန်သင့်သည်။
xml_set_end_ennamespace_decl_handler အတွက် callback function ကိုမှန်ကန်စွာသတ်မှတ်ထားကြောင်းသေချာပါစေ။ callback function တွင် namespace ဖြစ်ရပ်၏အဆုံးသည် log output သို့မဟုတ် debug ထုတ်ပြန်ကြေညာချက်မှတစ်ဆင့်အစပျိုးခြင်းရှိမရှိကိုကျွန်ုပ်တို့အတည်ပြုနိုင်သည်။
function handle_end_namespace_decl($prefix) {
echo "End of namespace declared for prefix: $prefix\n";
}
$parser = xml_parser_create();
xml_set_end_namespace_decl_handler($parser, "handle_end_namespace_decl");
// သုံးသပ်ကြည့်ရှုခြင်း XML စာချုပ်စာတမ်း
$xml_data = file_get_contents("http://gitbox.net/sample.xml");
xml_parse($parser, $xml_data);
xml_parser_free($parser);
ဤဥပမာတွင် လက်ကိုင် 1. သင်ဘယ်ကနေ end ကြေငြာချက်များကိုကိုင်တွယ်သော callback function ကိုဖြစ်သည်။ XML parser သည် namespace ၏အဆုံးကိုတွေ့သောအခါ၎င်းသည် function ကိုခေါ်ဆိုပြီး namespace ၏ရှေ့ဆက်ကိုဖြတ်သန်းသွားသည်။
callback function တွင် namespace ပြီးဆုံးပြီးနောက်စစ်ဆင်ရေးများကိုကိုင်တွယ်ရန်ပိုမိုရှုပ်ထွေးသောယုတ္တိဗေဒကိုရေးနိုင်သည်။ ဥပမာအားဖြင့်, သင်ရှေ့ဆက်အပေါ် အခြေခံ. သတ်သတ်မှတ်မှတ်စစ်ဆင်ရေးကိုလုပ်ဆောင်ရန်သို့မဟုတ် logging မှတဆင့် namespace ၏အသုံးပြုမှုကိုခြေရာခံရန်ဆုံးဖြတ်နိုင်သည်။
function handle_end_namespace_decl($prefix) {
if ($prefix == "ns") {
echo "End of 'ns' namespace detected.\n";
}
}
XML ဖိုင်ကိုခွဲခြမ်းစိတ်ဖြာသောအခါ, သင်သည် namespace ကြေငြာချက်အမှားတစ်ခုကြုံတွေ့ရနိုင်သည်။ အမှားများကိုရှောင်ရှားရန်သင့်လျော်သောအမှားကိုင်တွယ်မှုကိုပြင်ဆင်ခြင်းအားဖြင့်ဤအမှားများကိုသင်ဖမ်းယူနိုင်သည်။
function error_handler($errno, $errstr) {
echo "Error: [$errno] $errstr\n";
}
set_error_handler("error_handler");
$parser = xml_parser_create();
xml_set_end_namespace_decl_handler($parser, "handle_end_namespace_decl");
$xml_data = file_get_contents("http://gitbox.net/sample.xml");
if (!xml_parse($parser, $xml_data)) {
echo "XML Error: " . xml_error_string(xml_get_error_code($parser)) . "\n";
}
xml_parser_free($parser);
XML_SESSSESS_END_ENDOST_ENDOFT_DECLLATER function ကိုအသုံးပြုသောအခါ Namespace ၏ပြ problem နာကိုမဖြေရှင်းနိုင်သောပြ problem နာမှန်ကန်စွာမမှန်ကန်သော namespace ကြေငြာချက်သို့မဟုတ်မမှန်ကန်သော callback function setting ကိုအားဖြင့်ဖြစ်ပေါ်စေသည်။ ဤပြ problem နာသည် XML ဖိုင်တွင် Namespace ကြေငြာချက်ကိုမှန်ကန်ကြောင်းသေချာစေရန်အတွက်သင့်လျော်သော callback function ကိုကိုင်တွယ်ဖြေရှင်းခြင်းနှင့်အမှားအယွင်းများနှင့်ခြွင်းချက်များကိုကိုင်တွယ်ခြင်းအားဖြင့်ဤပြ problem နာကိုထိထိရောက်ရောက်ဖြေရှင်းနိုင်သည်။
ဤနည်းအားဖြင့်ခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်း namespace ကိုမှန်ကန်စွာကိုင်တွယ်ရန်, အမှားအယွင်းများကိုရှောင်ရှားရန်,