PHP တွင် XML ကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ xml_set_character_Data_Handler နှင့် XML_set_Ennamonface_Decl_Handler သည်မတူညီသောခွဲခြမ်းစိတ်ဖြာမှုများပြုလုပ်လေ့ရှိသည်။ သူတို့ဘယ်လိုအလုပ်လုပ်ပုံ, အတူတကွအသုံးပြုသည်ကိုနားလည်ခြင်းသည်ရှုပ်ထွေးသော XML document parersers တည်ဆောက်ရန်အလွန်အရေးကြီးသည်။
xml_set_character_data_handler () parser ၏ဇာတ်ကောင်အချက်အလက်များ (I.E. စာသားများအကြားစာသား) ကိုတွေ့ရသည့်အခါ callback function ကိုခေါ်ရန်အသုံးပြုသည်။
XML_SESS_END_EnNamespace_Decl_handler () - Namespace သည်ကြေငြာချက်အဆုံးသတ်သောအခါ callback function ကိုခေါ်ရန်အသုံးပြုသည်။ XML စာရွက်စာတမ်းများကိုအမည်များဖြင့်ကိုင်တွယ်ရန်အထူးအရေးကြီးသည်။
ဤပရိုဆက်ဆာနှစ်ခုသည်စာသားအကြောင်းအရာနှင့် namespace ၏ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာနယ်နိမိတ်များကိုအသီးသီးကိုင်တွယ်နိုင်သည်။ Conjunction တွင်၎င်းကိုအသုံးပြုခြင်းအားဖြင့်သင်သည် XML အကြောင်းအရာများကို namespace နှင့်ခွဲခြမ်းစိတ်ဖြာသောအခါရှင်းလင်းသောဖွဲ့စည်းပုံနှင့်တိကျသောအချက်အလက်များကိုလေ့လာနိုင်သည်။
ဤတွင် parser ဖန်တီးရန်နှင့်တစ်ချိန်တည်းတွင်ပရိုဆက်ဆာများကိုမည်သို့တပ်ဆင်ရမည်ကိုပြသသည့်ကွန်ကရစ်ဥပမာတစ်ခုဖြစ်သည်။
<?php
// simulated XML ကေြနပ်သော
$xmlData = <<<XML
<root xmlns:ns="http://gitbox.net/ns">
<ns:item>ဤသည် namespace နှင့်အတူစီမံကိန်းဖြစ်ပါတယ်</ns:item>
</root>
XML;
// parser ဖန်တီးပါ
$parser = xml_parser_create_ns("UTF-8", ":");
// ဇာတ်ကောင်ဒေတာပရိုဆက်ဆာကိုတည်ဆောက်ခြင်း
xml_set_character_data_handler($parser, function($parser, $data) {
// whitespace ဇာတ်ကောင်ဖယ်ရှားပါ
$data = trim($data);
if (!empty($data)) {
echo "ဇာတ်ကောင်ဒေတာ: " . $data . PHP_EOL;
}
});
// namespace end processor ကိုသတ်မှတ်ပါ
xml_set_end_namespace_decl_handler($parser, function($parser, $prefix) {
echo "namespace ၏အဆုံး: " . ($prefix ?: "[ပျက်ကွက်ခြင်း]") . PHP_EOL;
});
// 设置ပျက်ကွက်ခြင်း处理器,သတိပေးချက်များကိုရှောင်ပါ
xml_set_element_handler($parser, function(){}, function(){});
// ခွဲခြမ်းစိတ်ဖြာစတင်ပါ
if (!xml_parse($parser, $xmlData, true)) {
die(sprintf("XML အမှား: %s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// အရင်းအမြစ်များကိုအခမဲ့
xml_parser_free($parser);
?>
ဇာတ်ကောင်ဒေတာ: ဤသည် namespace နှင့်အတူစီမံကိန်းဖြစ်ပါတယ်
namespace ၏အဆုံး: ns
အထက်ပါကုဒ်၌:
namespace-enabled parser ကိုဖန်တီးရန် XML_Parser_Create_ns ကို သုံးပါ။
ပရိုဆက်ဆာနှစ်ခုကိုမှတ်ပုံတင်ထားပါသည်။
ဇာတ်ကောင်ဒေတာပရိုဆက်ဆာသည် "ဤသည်" items item> items: items: items-item နှင့်အတူစီမံကိန်းဖြစ်ပါတယ်။
Parser Reads </ NS: item> ကိုဖတ်ပြီး NS Namespace ၏အဆုံးကိုအသိအမှတ်ပြုသည့်အခါ Namester end processor သည်ပစ်ခတ်လိမ့်မည်။
XML_PLESSESS ကို XML ကြိုးများကိုခွဲထုတ်ရန်။
အဆုံးမှာ parser အရင်းအမြစ်များကိုလွှတ်ပေးရန် xml_parser_Free ကို သုံးပါ။
ဤပရိုဆက်ဆာနှစ်ခုကိုအသုံးပြုခြင်းအားဖြင့်သင့်အားခွင့်ပြုသည် -
ပိုကောင်းတဲ့ခြေရာခံခြင်းနှင့် namespace ၏ဘဝသံသရာသံသရာကိုကိုင်တွယ်။
အသိုက် namespaces ပါ 0 င်သော XML စာရွက်စာတမ်းများနှင့်အလုပ်လုပ်သောအခါရှင်းလင်းသောအခြေအနေဖွဲ့စည်းပုံကိုထိန်းသိမ်းပါ။
ခိုင်လုံသောသတင်းအချက်အလက်များကိုထုတ်ယူခြင်းနှင့်၎င်းကို XML ဖွဲ့စည်းပုံနှင့်ကိုက်ညီမှုရှိစေရန်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိသည်။
၎င်းသည်ဆပ်ပြာ, RSS သို့မဟုတ်အခြား XML namespace သုံး. protocols များနှင့်ပုံစံများကိုကိုင်တွယ်ရန်အထူးသဖြင့်အရေးကြီးသည်။
ကြီးမားသောစီမံကိန်းများတွင်ပရိုဆက်ဆာတစ်ခုစီသည် Capeature နှင့် Readardability ကိုထိန်းသိမ်းရန်ပိတ်သိမ်းရန်အတွက်ပရိုဆက်ဆာတစ်ခုစီကိုလူတန်းစားနည်းဖြင့် encapsulated လုပ်နိုင်သည်။ တစ်ချိန်တည်းမှာပင် Processor အတွင်း၌ပြည်နယ်မှတ်တမ်းများ (ထိုကဲ့သို့သော node ကို node, node namepace stack စသဖြင့်) ကို အသုံးပြု. Complex XML ၏ခွဲခြမ်းစိတ်ဖြာခြင်းကိုတိုးတက်စေနိုင်သည်။
xml_set_character_Data_Handler နှင့် xml_set_Ennames_Decller ကို ပေါင်းစပ်ခြင်းအားဖြင့်သင်သည် XML ဒေတာခွဲခုံလိုအပ်ချက်များကိုအလွယ်တကူကိုင်တွယ်ရန်ပိုမိုအားကောင်းသည့် XML ခွဲခြမ်းစိတ်ဖြာခြင်းယုတ္တိဗေဒကိုပိုမိုတည်ဆောက်နိုင်လိမ့်မည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
XML