XML စာရွက်စာတမ်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည် PHP ၏ Expat Extension သည် developer များကို developer များကို developer များအားစာရွက်စာတမ်းများရှိအဆောက်အအုံများ၏အစနှင့်အဆုံးကိုတုံ့ပြန်နိုင်သည့်အစွမ်းထက်သောလုပ်ရပ်များကိုကိုင်တွယ်ဖြေရှင်းနိုင်သည့်လုပ်ငန်းဆောင်တာများဖြင့်ပေးသည်။ ၎င်းတို့အနက် Xml_set_Ennamonface_Decl_Handler function သည် namespace ကြေငြာချက်၏အဆုံးတွင် callbacks ကိုဖြစ်ပေါ်စေရန်အတွက်အထူးဒီဇိုင်းပြုလုပ်ထားပြီး Namespace နှင့်ဆက်စပ်သော metadata ကိုစုဆောင်းရန်အလွန်သင့်လျော်သည်။
XML_SESS_END_ENDOMPARD_DECL_Handler ဆိုသည်မှာ Namespace ကြေငြာစာတမ်းပရိုဆက်ဆာကိုသတ်မှတ်ရန် PHP မှပေးသော function တစ်ခုဖြစ်ပြီး၎င်း၏အဓိပ္ပါယ်သည်အောက်ပါအတိုင်းဖြစ်သည်။
bool xml_set_end_namespace_decl_handler(XMLParser $parser, callable $handler)
$ parser သည် XML parser အရင်းအမြစ်ဖြစ်ပြီး XML_Parser_Create () မှဖန်တီးထားသော XML parser အရင်းအမြစ်ဖြစ်သည်။
$ handler သည် namespace ကြေငြာချက်၏အဆုံးတွင်ခေါ်ဆိုမှု function ကိုခေါ်ယူလိမ့်မည်, function form မှာအောက်ပါအတိုင်းဖြစ်သည် -
function handler(XMLParser $parser, string $prefix): void
ဤပြန်လည်ခေါ်ဆိုမှုသည် developer မှနောက်ထပ်အပြောင်းအလဲအတွက် Namespace Prefix တွင်အတည်ပြုလိမ့်မည်။
XML_set_Ennamespace_Decl_handler နှင့်ပေါင်းစပ်ပြီးသန့်ရှင်းရေးလုပ်ခြင်း, ရေတွက်ခြင်း, ရေတွက်ခြင်း, ရေတွက်ခြင်း, ရေတွက်ခြင်း, ရေတွက်ခြင်း,
XML namespace တစ်ခု၏အဆုံးမှာ metadata ကိုဘယ်လိုရနိုင်မလဲဆိုတာပြသတဲ့နမူနာကုဒ်တစ်ခုပါ။
<?php
// ဖန်တီး XML မိစ်ဆာ
$parser = xml_parser_create();
// Metadata ကိုသိမ်းပိုက်ရန်
$namespaceMetadata = [];
// namespace end processor ကိုသတ်မှတ်ပါ
xml_set_end_namespace_decl_handler($parser, function($parser, $prefix) use (&$namespaceMetadata) {
// namespace ရှေ့ဆက်၏အဆုံးသတင်းအချက်အလက်မှတ်တမ်းတင်ပါ
$timestamp = date('Y-m-d H:i:s');
$namespaceMetadata[] = [
'prefix' => $prefix,
'ended_at' => $timestamp
];
echo "တိုင်းရံ '{$prefix}' တည်နေ {$timestamp} အပြီးသတ်。\n";
});
// အာရုံဖော်ခြင်း XML အချက်များ(含တိုင်းရံ)
$xmlData = <<<XML
<root xmlns:h="http://gitbox.net/hello" xmlns:f="http://gitbox.net/foo">
<h:header>ဉီးခေါင်း</h:header>
<f:footer>အမြီး</f:footer>
</root>
XML;
// သုံးသပ်ကြည့်ရှုခြင်း XML အချက်များ
if (!xml_parse($parser, $xmlData, true)) {
echo "XML အမှား: " . xml_error_string(xml_get_error_code($parser));
exit;
}
// 销毁မိစ်ဆာ资源
xml_parser_free($parser);
// 输出所有元အချက်များ
print_r($namespaceMetadata);
namespace end processor definition <br> Processor ကိုသတ်မှတ်ရန်အမည်မသိလုပ်ဆောင်ချက်များကို သုံး. Namespace ကြေငြာချက်၏အဆုံးတွင်လက်ရှိအချိန်နှင့်ရှေ့ဆက်ကိုမှတ်တမ်းတင်ပါ။
XML ဥပမာ
XMLNS: H နှင့် XMLNS: F သည် http://gitbox.net/hello နှင့် http://gitbox.net/foo နှင့်သက်ဆိုင်သောအမည်နှစ်စောင်ကိုသတ်မှတ်ပါ။
Metadata သိုလှောင်မှု <br> End Event Records အားလုံးသည် $ namespacemetata array တွင်သိမ်းဆည်းထားပြီးသစ်ထုတ်လုပ်ခြင်း, debugging သို့မဟုတ်စာရင်းအင်းဆိုင်ရာရည်ရွယ်ချက်များအတွက်အသုံးပြုနိုင်သည်။
debespace နယ်ပယ် debugging ၏အဆုံးအချိန်
namespaces အတွက်အသိုက်ဖွဲ့စည်းပုံ၏ရှုပ်ထွေးမှုကိုခွဲခြမ်းစိတ်ဖြာ
namespace lifecycle log ထုတ်လုပ်ခြင်း
ပြီးပြည့်စုံသောခြေရာခံခြင်းအတွက် Start Processor (XML_SESS_STARTATT_DECTS_Handler) နှင့်ပေါင်းစပ်ထားသည်
XML_SESSSESS_END_EnNamespace_Decl_handler function ကိုကျွန်ုပ်တို့က Namespace ကြေငြာချက်ဘဝသံသရာအဆုံးမှာသန့်စင်ထားသောယုတ္တိဗေဒကိုလုပ်ဆောင်နိုင်ပါသည်။ XML စာရွက်စာတမ်းများကိုရှုပ်ထွေးသော namespace အဆောက်အအုံများနှင့်ဆက်ဆံရာတွင်ဤစွမ်းရည်သည်အထူးသဖြင့် Namespace Endatents များကိုစုဆောင်းရန်, မှတ်တမ်းတင်ရန်သို့မဟုတ် Namespace end ဖြစ်ရပ်များကိုပြန်လည်ရယူရန်လိုအပ်သည်။ ၎င်းကိုအခြား parser လုပ်ဆောင်မှုများနှင့်အတူအသုံးပြုခြင်းသည် XML ဒေတာအပြောင်းအလဲအတွက်ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုများစွာတိုးတက်စေလိမ့်မည်။