XML_SEST_END_Ennamespace_Decl_Handler ကိုအသုံးပြုနည်း XML namespace ကိုကိုင်တွယ်ရန်နှင့်မိတ္တူပွားများမိတ္တူကူးယူခြင်းမှရှောင်ရှားရန်။
XML ဒေတာများနှင့်အလုပ်လုပ်သောအခါ Namespaces သည်အရေးကြီးသောအယူအဆတစ်ခုဖြစ်သည်။ ၎င်းသည်အထူးသဖြင့် XML စာရွက်စာတမ်းများသို့မဟုတ် xml စာရွက်စာတမ်းများပါ 0 င်သော XML စာရွက်စာတမ်းများသို့မဟုတ် XML စာရွက်စာတမ်းများပါ 0 င်သော XML စာရွက်စာတမ်းများတွင်ပါ 0 င်သော XML စာရွက်စာတမ်းများတွင်ပါ 0 င်သည်။ XML စာရွက်စာတမ်းများကိုပြုပြင်သည့်အခါ Namespace ၏မှန်ကန်မှုကိုသေချာစေရန်အတွက် PHP ၏ XML_SESSSESS_ENDOND_Ennames_Decl_Handler ကိုအသုံးပြုလေ့ရှိသည်။ ဤလုပ်ဆောင်ချက်သည်မိတ္တူပွားသောကြေငြာချက်ပြ problems နာများကိုအကောင်အထည်ဖော်နိုင်ပြီးခွဲခြမ်းစိတ်ဖြာခြင်းတွင်မလိုအပ်သောသို့မဟုတ်ပ conflict ိပက်ခများမရှိကြောင်းသေချာစေသည်။
XML_SESSESS_ENDOMPARD_DECLECL_Handler function သည် PHP XML parsing extension တွင် function တစ်ခုဖြစ်သည်။ developer များက developer များက XML parser အတွက်ထုံးစံအတိုင်းခေါ်ဆိုမှု function ကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ရိုးရိုးလေးပြောရလျှင် PHP သည် XML parser သည် namespace တစ်ခုဖြစ်လာသောအခါ PHP သည်ဤ callback function ကိုခေါ်ဆိုလိမ့်မည်။
ဤလုပ်ဆောင်မှု၏လုပ်ဆောင်ချက်မှာ Namespace ၏အဆုံးတွင်အချို့သောသီးခြားအပြောင်းအလဲများကိုပြုလုပ်ရန်အတွက်တည်းဖြတ်ခြင်းကိုစစ်ဆေးရန်အတွက်တိကျသောအပြောင်းအလဲများပြုလုပ်ရန်အတွက် Namespace သည်ထပ်ခါတလဲလဲပ conflicts ိပက်ခများသို့မဟုတ်မလိုအပ်သောကြေညာချက်များကိုရှောင်ရှားရန်အခြားသန့်ရှင်းရေးလုပ်ငန်းများကိုကြေငြာခြင်း,
XML_SESSSESS_END_ENNERNAMBace_Decller function ကိုအသုံးပြုသောအခါ, အောက်ပါအဆင့်များကိုသင်လိုက်နာရန်သင်လိုအပ်သည်။
XML parser ကိုစတင်ပါ။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် XML parser ဥပမာအား xml_parser_create () function မှတဆင့်ဖန်တီးရန်လိုအပ်သည်။
namespace end processing လုပ်ဆောင်မှုကိုသတ်မှတ်ပါ။
xml_set_end_ennamespace_Decl_handler function ကိုသုံးပါ။
xml အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်း -
XML_Parse () function ကိုခေါ်ဆိုပါက XML ဒေတာများကိုစတင်ရန်နှင့်ကျွန်ုပ်တို့သတ်မှတ်ထားသည့် callback function ကိုဖြတ်ကူးရန်ခေါ်ပါ။
parser ကိုပိတ်ပါ:
ခွဲခြမ်းစိတ်ဖြာပြီးနောက် xml_parser_Free () ကို parser အရင်းအမြစ်များကိုအခမဲ့သုံးပါ။
XML_set_Ennamnames_Decl_Handler function ကို အသုံးပြု. ရိုးရှင်းသောဥပမာကုဒ်တစ်ခုမှာ,
<?php
// a XML မိစ်ဆာ
$parser = xml_parser_create();
// namespace ဖြစ်ရပ်အဆုံးသတ်ရေးအတွက် callback function ကိုသတ်မှတ်ပါ
function endNamespaceHandler($parser, $namespaceURI, $prefix) {
static $declaredNamespaces = [];
// ဒီ namespace ကြေငြာခဲ့လျှင်,ထပ်ခါတလဲလဲအပြောင်းအလဲနဲ့
if (in_array($namespaceURI, $declaredNamespaces)) {
echo "တိုင်းရံ '$namespaceURI' ကြေငြာခဲ့သည်,ဆက်လုပ်ပါ。\n";
return;
}
// 处理တိုင်းရံ
echo "တိုင်းရံ '$namespaceURI' အပြီးသတ်,ရှေ့ဆက်က '$prefix'\n";
// 记录已声明的တိုင်းရံ
$declaredNamespaces[] = $namespaceURI;
}
// 设置တိုင်းရံအပြီးသတ်事件的处理函数
xml_set_end_namespace_decl_handler($parser, 'endNamespaceHandler');
// နမူနာ XML အချက်များ
$xmlData = <<<XML
<root xmlns:ns1="http://gitbox.net/ns1" xmlns:ns2="http://gitbox.net/ns2">
<ns1:element>ဓါတ် 1</ns1:element>
<ns2:element>ဓါတ် 2</ns2:element>
</root>
XML;
// ခွဲခြမ်းစိတ်ဖြာစတင်ပါ XML အချက်များ
if (!xml_parse($parser, $xmlData)) {
die(sprintf("XML အမှား: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// 释放မိစ်ဆာ
xml_parser_free($parser);
?>
parser ကိုအစပြု:
XML parser ဥပမာအားဖြင့် XML_Parser_Create () မှတဆင့်ဖန်တီးသည်။ XML အချက်အလက်များကိုအသုံးပြုသည်။
namespace အဆုံးအပြောင်းအလဲနဲ့လုပ်ဆောင်ချက် -
Namespace End ဖြစ်ရပ်များကိုကိုင်တွယ်ရန် EndNamespaceHandler function ကိုကျွန်ုပ်တို့သတ်မှတ်သည်။ လုပ်ဆောင်ချက်အတွင်း၌ကျွန်ုပ်တို့သည်ပြုပြင်ထားသော namespace uri ကိုမှတ်တမ်းတင်ရန် static variable viable -notednameptiones များ သုံးသည်။ အကယ်. လက်ရှိ namespace Urii သည်ခင်းကျင်းမှုတွင်ပေါ်ပေါက်လာပါက Namespace ၏ထပ်ခါတလဲလဲကြေငြာခြင်းကိုရှောင်ရှားရန်အပြောင်းအလဲများကိုကျွန်ုပ်တို့ skip ။
XML ဒေတာ:
နမူနာတွင် NS1 နှင့် NS2 အမည်နှစ်ခုလုံးကို အသုံးပြု. ဤအမည်များကိုဒြပ်စင်များတွင်အသီးသီးသုံးနိုင်သည်။ ခွဲခြမ်းစိတ်ဖြာခြင်းသည်ခွဲခြမ်းစိတ်ဖြာမှု၏အဆုံးကိုခွဲခြမ်းစိတ်ဖြာသောအခါခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်း၎င်းသည်ကျွန်ုပ်တို့၏ EndoSpaceHandler Callback function ကိုခေါ်ဆိုသည်။
ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အမှားအယွင်းများ:
xml_parse () function ကိုခေါ်ပါ။ ခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်းအမှားတစ်ခုရှိပါကကျွန်ုပ်တို့သည် XML_ERROR_STRING () နှင့် xml_get_current_line_number_line_number_number_number_number_number_number_number_number_number_number_number_number_Number_number_number_number_Number_number_Number_Number_number ကိုအသုံးပြုသည်။
ရှုပ်ထွေးသော XML ဒေတာများတွင်တူညီသော namespace ကိုထပ်ခါတလဲလဲကြေငြာသည့်ကိစ္စများဖြစ်နိုင်သည်။ xml_set_end_endnonface_decl_handler ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကြေငြာထားသော namespace ကိုမှတ်တမ်းတင်ခြင်းဖြင့်ထပ်ခါတလဲလဲကြေငြာချက်များ၏ဤပြ problem နာကိုကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည်။ ဥပမာအားဖြင့်အထက်ပါကုဒ်တွင် static variable variable ကို endernespacehandler function တွင် $ ကြေငြာချက် $ စာရင်းများကို ပြုပြင်ခြင်း namespace uri သိုလှောင်ရန်အသုံးပြုသည်။ တစ် ဦး namespace အဆုံးဖြစ်ရပ်မှန်ကိုအခါတိုင်းအချိန်ကုန်ခံတိုင်း namespace ရှိပြီးသားရှိမရှိစစ်ဆေးပါလိမ့်မယ်။
PHP ၏ xml_set_Ennames_Decl_Handler ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် XML namespace ၏နောက်ဆုံးပွဲကိုထိရောက်စွာထိန်းချုပ်နိုင်သည်။ Static variable များကိုမှတ်တမ်းတင်ရန်ကြေငြာခြင်းဖြင့်ကြေငြာထားသောအမည်များကိုကြေငြာရန်ကျွန်ုပ်တို့သည် XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ Namespace ပ conflicts ိပက်ခများနှင့်မကိုက်ညီကြောင်းသေချာပါသည်။