လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> xml_set_character_Data_Handler နှင့် XML_SESS_END_END_END_ENDE_DECL_Handler farmsing တွင်အလုပ်လုပ်ပုံ

xml_set_character_Data_Handler နှင့် XML_SESS_END_END_END_ENDE_DECL_Handler farmsing တွင်အလုပ်လုပ်ပုံ

gitbox 2025-05-26

PHP တွင် XML ကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ xml_set_character_Data_Handler နှင့် XML_set_Ennamonface_Decl_Handler သည်မတူညီသောခွဲခြမ်းစိတ်ဖြာမှုများပြုလုပ်လေ့ရှိသည်။ သူတို့ဘယ်လိုအလုပ်လုပ်ပုံ, အတူတကွအသုံးပြုသည်ကိုနားလည်ခြင်းသည်ရှုပ်ထွေးသော XML document parersers တည်ဆောက်ရန်အလွန်အရေးကြီးသည်။

1 ။ အခြေခံသဘောတရားများကိုပြန်လည်သုံးသပ်ခြင်း

  • xml_set_character_data_handler () parser ၏ဇာတ်ကောင်အချက်အလက်များ (I.E. စာသားများအကြားစာသား) ကိုတွေ့ရသည့်အခါ callback function ကိုခေါ်ရန်အသုံးပြုသည်။

  • XML_SESS_END_EnNamespace_Decl_handler () - Namespace သည်ကြေငြာချက်အဆုံးသတ်သောအခါ callback function ကိုခေါ်ရန်အသုံးပြုသည်။ XML စာရွက်စာတမ်းများကိုအမည်များဖြင့်ကိုင်တွယ်ရန်အထူးအရေးကြီးသည်။

ဤပရိုဆက်ဆာနှစ်ခုသည်စာသားအကြောင်းအရာနှင့် namespace ၏ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာနယ်နိမိတ်များကိုအသီးသီးကိုင်တွယ်နိုင်သည်။ Conjunction တွင်၎င်းကိုအသုံးပြုခြင်းအားဖြင့်သင်သည် XML အကြောင်းအရာများကို namespace နှင့်ခွဲခြမ်းစိတ်ဖြာသောအခါရှင်းလင်းသောဖွဲ့စည်းပုံနှင့်တိကျသောအချက်အလက်များကိုလေ့လာနိုင်သည်။

2 ။ လက်တွေ့ကျတဲ့ဥပမာ - ပေါင်းစပ်ပရိုဆက်ဆာနှစ်ခုကိုသုံးပါ

ဤတွင် 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

3 ။ ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်ဖော်ပြချက်

အထက်ပါကုဒ်၌:

  1. namespace-enabled parser ကိုဖန်တီးရန် XML_Parser_Create_ns ကို သုံးပါ။

  2. ပရိုဆက်ဆာနှစ်ခုကိုမှတ်ပုံတင်ထားပါသည်။

    • ဇာတ်ကောင်ဒေတာပရိုဆက်ဆာသည် "ဤသည်" items item> items: items: items-item နှင့်အတူစီမံကိန်းဖြစ်ပါတယ်။

    • Parser Reads </ NS: item> ကိုဖတ်ပြီး NS Namespace ၏အဆုံးကိုအသိအမှတ်ပြုသည့်အခါ Namester end processor သည်ပစ်ခတ်လိမ့်မည်။

  3. XML_PLESSESS ကို XML ကြိုးများကိုခွဲထုတ်ရန်။

  4. အဆုံးမှာ parser အရင်းအမြစ်များကိုလွှတ်ပေးရန် xml_parser_Free ကို သုံးပါ။

4 ။ ပေါင်းစပ်အသုံးပြုမှု၏အရေးပါမှု

ဤပရိုဆက်ဆာနှစ်ခုကိုအသုံးပြုခြင်းအားဖြင့်သင့်အားခွင့်ပြုသည် -

  • ပိုကောင်းတဲ့ခြေရာခံခြင်းနှင့် namespace ၏ဘဝသံသရာသံသရာကိုကိုင်တွယ်။

  • အသိုက် namespaces ပါ 0 င်သော XML စာရွက်စာတမ်းများနှင့်အလုပ်လုပ်သောအခါရှင်းလင်းသောအခြေအနေဖွဲ့စည်းပုံကိုထိန်းသိမ်းပါ။

  • ခိုင်လုံသောသတင်းအချက်အလက်များကိုထုတ်ယူခြင်းနှင့်၎င်းကို XML ဖွဲ့စည်းပုံနှင့်ကိုက်ညီမှုရှိစေရန်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိသည်။

၎င်းသည်ဆပ်ပြာ, RSS သို့မဟုတ်အခြား XML namespace သုံး. protocols များနှင့်ပုံစံများကိုကိုင်တွယ်ရန်အထူးသဖြင့်အရေးကြီးသည်။

5 ။ လက်တွေ့ကျသောလျှောက်လွှာအကြံပြုချက်များ

ကြီးမားသောစီမံကိန်းများတွင်ပရိုဆက်ဆာတစ်ခုစီသည် Capeature နှင့် Readardability ကိုထိန်းသိမ်းရန်ပိတ်သိမ်းရန်အတွက်ပရိုဆက်ဆာတစ်ခုစီကိုလူတန်းစားနည်းဖြင့် encapsulated လုပ်နိုင်သည်။ တစ်ချိန်တည်းမှာပင် Processor အတွင်း၌ပြည်နယ်မှတ်တမ်းများ (ထိုကဲ့သို့သော node ကို node, node namepace stack စသဖြင့်) ကို အသုံးပြု. Complex XML ၏ခွဲခြမ်းစိတ်ဖြာခြင်းကိုတိုးတက်စေနိုင်သည်။

xml_set_character_Data_Handler နှင့် xml_set_Ennames_Decller ကို ပေါင်းစပ်ခြင်းအားဖြင့်သင်သည် XML ဒေတာခွဲခုံလိုအပ်ချက်များကိုအလွယ်တကူကိုင်တွယ်ရန်ပိုမိုအားကောင်းသည့် XML ခွဲခြမ်းစိတ်ဖြာခြင်းယုတ္တိဗေဒကိုပိုမိုတည်ဆောက်နိုင်လိမ့်မည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    XML