PHP တွင် XML ဖိုင်များကို processing လုပ်သည့်အခါ XML parser (Expat) ကဲ့သို့သောအဖြစ်အပျက်များကိုမောင်းနှင်သည့်ခွဲခြမ်းစိတ်ဖြာနည်းများသည်အချက်အလက်အမြောက်အများကိုထိထိရောက်ရောက်ဖတ်နိုင်သည်။ အထူးသဖြင့် Namespace သည် XML စာရွက်စာတမ်းများတွင်ပါ 0 င်ပတ်သက်သည့်အခါ Namespace နှင့်သက်ဆိုင်သော callback function များကို အသုံးပြု. ဆင်ခြင်တုံတရားဖြင့်အသုံးပြုခြင်းသည်ခွဲခြမ်းစိတ်ဖြာခြင်း၏ထိရောက်မှုနှင့်တိကျမှန်ကန်မှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
xml_set_end_endnames_decl_handler ကို Xml Tree တွင်မည်သို့လိမ္မာပါးနပ်စွာအသုံးပြုရမည်ကိုအာရုံစိုက်မည်။
XML_SESS_END_ENDOFT_DECLECL_HANDER ဆိုသည်မှာ PHP မှပေးသော function တစ်ခုဖြစ်ပြီး XML parser သည် Namespace ကြေငြာချက်၏အဆုံးကိုတွေ့ရသည့်အခါထိန်းချုပ်မှု function ကိုမှတ်ပုံတင်ရန်လုပ်ဆောင်သည်။ ၎င်းသည် developer များအား XML namespaces နှင့်ယုတ္တိသယံဇာတစီမံခန့်ခွဲမှုနှင့်ယုတ္တိနည်းစနစ်များကိုပိုမိုတိကျသောအရင်းအမြစ်စီမံခန့်ခွဲမှုရရှိရန်အတွက်သတ်မှတ်ထားသောကြေငြာချက်များ၏အဆုံးသတ်ကြေငြာချက်များများ၏အဆုံးသတ်ဖြစ်ရပ်များကိုအချိန်မီဖမ်းယူနိုင်ရန်အဓိကအားဖြင့်အဓိကအားဖြင့်ကူညီသည်။
function ရှေ့ပြေးပုံစံ:
bool xml_set_end_namespace_decl_handler ( resource $parser , callable $handler )
$ Parser : XML parser အရင်းအမြစ်။
$ handler - parser သည် namespace ၏အဆုံးကိုတွေ့သောအခါခေါ်ဆိုမှု function ကိုခေါ်သည်။ ဒီ function က parameters တွေကို parameters တွေကိုယူပါတယ်။ Namespace Uri နှင့်ရှေ့ဆက်။
Namespace Management ကို optimize : XML_Set_Ennamnames_Decl_Handler ကိုမကြာခဏပြောင်းပြီး Memory ယိုစိမ့်မှုကိုရှောင်ရှားရန် XML_SESS_END_END_END_DNAMNERS_DECL_Handler ကိုအသုံးပြုသောအခါ,
ခွဲခြမ်းစိတ်ဖြာမှုစွမ်းရည်ကိုတိုးတက်အောင်လုပ်ခြင်း - Namespace End Products များကိုအချိန်မှန်ဖမ်းယူခြင်းဖြင့်မလိုအပ်သောကမ္ဘာလုံးဆိုင်ရာရှာဖွေမှုများနှင့်ထပ်ခါတလဲလဲစစ်ဆင်ရေးများကိုလျှော့ချခြင်းနှင့်ကုဒ်အကောင်အထည်ဖော်မှုကိုတိုးမြှင့်ခြင်းအားဖြင့်။
Enhanced parsing တိကျမှု - မမှန်ကန်သော namespace ပိတ်ခြင်းကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ကြဉ်ပါ။
XML ဖိုင်ကို xml_set_end_nnamnspace_Decl_handler ကို သုံး. Namespace ကြေငြာချက်ဖြင့်မည်သို့ခွဲခြမ်းစိတ်ဖြာနိုင်ကြောင်းပြသသည့် PHP-based ဥပမာတစ်ခုဖြစ်သည်။
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:ns="http://gitbox.net/ns/sample">
<ns:item>ကေြနပ်သော1</ns:item>
<ns:item>ကေြနပ်သော2</ns:item>
</root>
XML;
$parser = xml_parser_create();
// encoding set
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
// စတင်သော namespace ကြုံတွေ့သောအခါအစပျိုး
xml_set_start_namespace_decl_handler($parser, function($parser, $prefix, $uri) {
echo "namespace ကိုစတင်ပါ: prefix = $prefix, uri = $uri\n";
});
// အဆုံးမှာ namespace ကြုံတွေ့သောအခါအစပျိုး
xml_set_end_namespace_decl_handler($parser, function($parser, $prefix) {
echo "namespace အဆုံးသတ်: prefix = $prefix\n";
});
// Electracting Element Start Tags များ
xml_set_element_handler($parser,
function($parser, $name, $attrs) {
echo "ဒြပ်စင်စတင်ပါ: $name\n";
},
function($parser, $name) {
echo "ဒြပ်စင်၏အဆုံး: $name\n";
}
);
// ဇာတ်ကောင်အချက်အလက်များကိုလုပ်ငန်းစဉ်
xml_set_character_data_handler($parser, function($parser, $data) {
echo "ကေြနပ်သော: $data\n";
});
if (!xml_parse($parser, $xml, true)) {
die(sprintf("XML အမှားခွဲခြမ်းစိတ်ဖြာခြင်း: %s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
xml_parser_free($parser);
?>
XML_set_start_namespace_Decl_Handler မှတ်ပုံတင်ခြင်း NAMSTARE Start Event Relback, Print Namespace ရှေ့ဆက်နှင့် URI ။
XML_SESS_END_EnNamespace_Decl_Handler သည် Namespace End End rethackback ကိုမှတ်ပုံတင်ပြီး Namespace ရှေ့ဆက်ပုံနှိပ်ခြင်းနှင့် namespace ၏ဘဝသံသရာ၏အဆုံးကိုအတည်ပြုသည်။
Element တစ်ခု၏အစနှင့်အဆုံး၏အပြောင်းအလဲများပြန်ခေါ်ချက်သည်လုပ်ငန်းစဉ်ကိုခြေရာခံရန်အဆင်ပြေသော element name output ကိုထုတ်လုပ်ရန်အသုံးပြုသည်။
အက်ခရာဒေတာခေါ်ဆိုမှုသည် element အတွင်းရှိစာသားအကြောင်းအရာများကိုပုံနှိပ်ထုတ်ဝေသည်။
ဤနည်းအားဖြင့်ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်အတွင်း namespace ၏အစနှင့်အဆုံးကိုတိကျစွာဖမ်းမိခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုရှောင်ရှားခြင်း,
ရှုပ်ထွေးသော XML စာရွက်စာတမ်းများနှင့်ဆက်ဆံရာတွင်အထူးသဖြင့်အမည်စာရင်းများပါ 0 င်သည့်အခါ xml_set_Ennames_hem_Ennames_handler ၏ဆင်ခြင်တုံတရားများနှင့်ဆက်စပ်သော namespace products_handler နှင့်ဆက်စပ်သော namespace processing callback functions များကိုပိုမိုကောင်းမွန်စေနိုင်သည်။
Event-Driven Analysis နှင့်ပေါင်းစပ်ထားပြီး, Namespace Life Cyle သည်ရှင်းရှင်းလင်းလင်းခွဲခြားထားသည်။ ဤဆောင်းပါးသည် XML ခွဲခြမ်းစိတ်ဖြာလေ့ကျင့်ခန်းတွင်ဤဆောင်းပါးသည်သင့်အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။
PHP XML ခွဲခြမ်းစိတ်ဖြာခြင်းတွင်အရင်းအမြစ်များပိုမိုလိုအပ်ပါကနောက်ဆုံးသင်ခန်းစာများနှင့်ဥပမာများအတွက် https://gitbox.net/php/xml သို့ သင်ဝင်ရောက်ကြည့်ရှုနိုင်သည်။