PHP တွင် XML ဒေတာများကိုလုပ်ဆောင်သည့်အခါ parser လုပ်ဆောင်ချက်များကိုမကြာခဏလိုအပ်လေ့ရှိသည် ။ ဤဆောင်းပါးသည်သင့်အား၎င်း၏ parameters တွေကိုနက်နက်ရှိုင်းရှိုင်းနားလည်မှုကိုခံယူပြီး၎င်းကိုပိုမိုထိရောက်စွာအသုံးပြုရန်ကူညီရန်လက်တွေ့ကျသောအကြံပြုချက်များကိုပေးလိမ့်မည်။
XML_SESSSESS_END_ENDOMPARD_DECL_Handler ၏အဓိပ္ပါယ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool xml_set_end_namespace_decl_handler(XMLParser $parser, callable $handler)
၎င်း၏ function သည်သတ်မှတ်ထားသော xml parser $ parser အတွက် callback function ကို function ကို function ကို function ကိုမှတ်ပုံတင်ရန်ဖြစ်သည်။
တစ်နည်းပြောရလျှင် parser သည် namespace အဆုံး၏အတိုင်းအတာပမာဏကိုစစ်ဆေးရန် PHP သည်သင်သတ်မှတ်ထားသော $ handler ကို အလိုအလျောက်ခေါ်ဆိုလိမ့်မည်။
parameters နှစ်ခု၏အဓိပ္ပာယ်နှင့်အသုံးပြုမှုကိုပိုမိုနီးကပ်စွာကြည့်ကြပါစို့။
? $ parser
၎င်းသည် XML_Parser_Create () မှတဆင့်ဖန်တီးထားသော parser ဥပမာတစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်:
$parser = xml_parser_create();
သင်ဖြတ်သန်းနေသည့်အရာသည်ခိုင်လုံသော parser အရင်းအမြစ်တစ်ခုဖြစ်ကြောင်းသေချာစေရန်လိုအပ်သည် ။
? $ handler
ဤသည်မှာသင်သတ်မှတ်ထားသည့် callback function ကိုအောက်ပါအတိုင်းဖော်ပြထားသည်။
function handlerFunction(XMLParser $parser, string $prefix) {
// ယုတ္တိဗေဒ processing
}
$ parser : လက်ရှိ parser ဥပမာအားဖြင့် pass ။
$ ရှေ့ဆက် : အဆုံးသတ် namespace ရှေ့ဆက်။ အကယ်. ပုံမှန် namespace ပြီးဆုံးပါက၎င်း၏တန်ဖိုးသည်အချည်းနှီးသောကြိုးတစ်ခုဖြစ်လိမ့်မည် ။
ဥပမာ -
function endNsHandler($parser, $prefix) {
echo "namespace ၏အဆုံး:$prefix\n";
}
ထို့နောက်အောက်ပါကုဒ်နှင့်ချည်ထားပါ။
xml_set_end_namespace_decl_handler($parser, 'endNsHandler');
?? ထိပ်ဖျား 1 - CallBack လက်မှတ်ကိုစစ်ဆေးပါ
သင်၏ $ handler သည် မှန်ကန်သောနံပါတ်နှင့် parameters များကိုအမိန့်သတ်မှတ်ရန်သေချာအောင်လုပ်ပါ။ အကယ်. parameters တွေကိုမှားယွင်းနေတယ်ဆိုရင် PHP သည် Runtime တွင်အမှားတစ်ခုသတင်းပို့လိမ့်မည်။
?? သိကောင်းစရာ 2: Start Processor နှင့်အတူပေါင်းစပ်
များသောအားဖြင့်သင်သည် xml_set_start_start_start_start_decl_handler () namespace ၏စတင်ကြေငြာချက်ကိုကိုင်တွယ်ရန်တစ်ချိန်တည်းတွင်သုံးပါလိမ့်မည်။ ၎င်းသည် namespace ၏ဘဝသံသရာကိုအပြည့်အ 0 ခြေရာခံရန်ခွင့်ပြုသည်။
function startNsHandler($parser, $prefix, $uri) {
echo "namespace စတင်ခဲ့သည်:$prefix ($uri)\n";
}
xml_set_start_namespace_decl_handler($parser, 'startNsHandler');
?? သိကောင်းစရာ 3 - ပုံမှန် namespace ကိုကိုင်တွယ်ပါ
$ ရှေ့ဆက်သည် အချည်းနှီးသော string တစ်ခုဖြစ်သည့်အခါ၎င်းကိုလျစ်လျူမရှုပါနှင့်, ၎င်းသည်ပုံမှန် namespace ၏အဆုံးကိုညွှန်ပြသည်။ အထူးသဖြင့်ကိုင်တွယ်ရန်ခြွင်းချက်ဆိုင်ရာဆုံးဖြတ်ချက်များကိုသင်အသုံးပြုနိုင်သည်။
if ($prefix === '') {
echo "默认namespace ၏အဆုံး\n";
} else {
echo "တိုင်းရံ $prefix အပြီးသတ်\n";
}
?? သိကောင်းစရာ 4: output ကို debugging
Debug XML parsing ကို Debug လုပ်ရန် $ handler သို့အသေးစိတ်မှတ်တမ်းများကိုသင်ထည့်နိုင်သည်။ သို့မဟုတ်ဖိုင်တစ်ခုသို့အချက်အလက်များကိုရေးနိုင်သည်။ ဥပမာအားဖြင့်:
file_put_contents('log.txt', "namespace ၏အဆုံး:$prefix\n", FILE_APPEND);
?? သိကောင်းစရာ 5: URLs များကိုပြုပြင်သည့်အခါသတိထားပါ
သင်၏ XML တွင် URLs များပါ 0 င်ပါက,
<example xmlns:git="http://gitbox.net/ns">
ဤ URL များကိုကိုင်တွယ်သည့်အခါ XSS သို့မဟုတ်အခြားထိုးဆေးပြ problems နာများကိုရှောင်ရှားရန် output ကိုမှလွတ်မြောက်ရန်သတိရပါ။ ဥပမာအားဖြင့်:
$safeUrl = htmlspecialchars($uri, ENT_QUOTES, 'UTF-8');
အောက်ဖော်ပြပါသည်အပြည့်အဝအသုံးပြုမှုဥပမာတစ်ခုဖြစ်သည်။
<?php
$parser = xml_parser_create();
function startNsHandler($parser, $prefix, $uri) {
echo "namespace စတင်ခဲ့သည်:$prefix ($uri)\n";
}
function endNsHandler($parser, $prefix) {
echo "namespace ၏အဆုံး:$prefix\n";
}
xml_set_start_namespace_decl_handler($parser, 'startNsHandler');
xml_set_end_namespace_decl_handler($parser, 'endNsHandler');
$xml = <<<XML
<example xmlns:git="http://gitbox.net/ns">
<git:child>ကေြနပ်သော</git:child>
</example>
XML;
xml_parse($parser, $xml, true);
xml_parser_free($parser);
?>
ဤဥပမာတွင် <git: tag ကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ </ GIT ၏အဆုံးမှာ Start Namespace Processor ကိုပစ်ခတ်ပြီး </ git: chat namespace processor ဟုခေါ်သည်။