လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML_SESS_END_ENDOPTARD_DECL_Handler သည် XML_SESS_START_ESTART_ELATE_Handler နှင့် ပူးပေါင်း. Namespace Management ကိုပြီးမြောက်ရန်ပူးပေါင်းဆောင်ရွက်သည်

XML_SESS_END_ENDOPTARD_DECL_Handler သည် XML_SESS_START_ESTART_ELATE_Handler နှင့် ပူးပေါင်း. Namespace Management ကိုပြီးမြောက်ရန်ပူးပေါင်းဆောင်ရွက်သည်

gitbox 2025-05-26

XML ခွဲခြမ်းစိတ်ဖြာခြင်းတွင် Namespace Management သည်အလွန်အရေးကြီးသောအလုပ်တစ်ခုဖြစ်သည်။ XML_SEST_START_ELATTOMETE_Handler နှင့် XML_SESSE_ENDNAMNAMNAMNERS_DECLLERLERS ကို XML စာရွက်စာတမ်းများတွင် Names စာရွက်စာတမ်းများကိုပိုမိုကောင်းမွန်သောကိုင်တွယ်နိုင်သည့် XML_set_Ennamespace_Decl_Handler ကိုထောက်ပံ့ပေးသည်။

ဤဆောင်းပါးတွင်ဤလုပ်ဆောင်ချက်နှစ်ခုမှတဆင့်အမည်များကိုထိရောက်စွာစီမံခန့်ခွဲမှုရရှိရန်မည်သို့အသေးစိတ်လေ့လာမည်နည်း။

1 ။ namespace ဆိုတာဘာလဲ။

XML တွင် namespace ၏ function သည် element နှင့် attribute အမည်များအကြားပ conflicts ိပက်ခများကိုရှောင်ရှားရန်ဖြစ်သည်။ အထူးသဖြင့် XML Documents မျိုးစုံပေါင်းစည်းလိုက်တဲ့အခါ Namespace က element and attribute တစ်ခုစီကိုမှန်ကန်စွာအသိအမှတ်ပြုထားကြောင်းသေချာစေသည်။ namespace များသောအားဖြင့် URI ကကိုယ်စားပြုသည်။

ဥပမာအားဖြင့်:

 <foo xmlns:ns="http://www.example.com/ns">
  <ns:bar>Some data</ns:bar>
</foo>

ဤတွင် XMLNS: NS = "http://www.example.com/ns" သည် URI http://www.example.com/ns နှင့်ဆက်စပ်သော namespace ns များကို သတ်မှတ်သည်

2 ။ xml_set_start_element_Handler နှင့် xml_set_end_end_enspace_decl_handler

PHP သည်အလွန်အသုံးဝင်သော xml parsing farmsing farming လုပ်ဆောင်ချက်များကိုပေးသည်။

  • XML_set_Start_element_Handler : ဒီ function ကို START Element ကိုကြုံတွေ့ရတဲ့အခါ,

  • XML_SESS_END_EnD_ENDPASTACHADE_DECL_Handler : Namespace ကြေငြာချက်တွေကိုကူညီနိုင်တဲ့ namespace ကြေငြာချက်ကိုခွဲခြမ်းစိတ်ဖြာတဲ့အခါဒီ function ကိုခေါ်တဲ့အခါ။

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

3 ။ နမူနာကုဒ်: ထိရောက်စွာ namespace ကိုစီမံခန့်ခွဲ

xml_set_start_element_handler နှင့် xml_set_end_ennamnsmer_handler ကို အသုံးပြုသောနမူနာကုဒ်ဖြစ်သည်။ ဤကုဒ်သည်ဤအပြောင်းအလဲများနှစ်ခုမှတစ်ဆင့် namespaces မျိုးစုံနှင့်အတူ xml ဖိုင်ကိုမည်သို့ခွဲခြမ်းစိတ်ဖြာရမည်ကိုပြသသည်။

 <?php

// XMLခွဲခြမ်းစိတ်ဖြာခြင်း၏အစနှင့်အဆုံး element processing processing
function startElementHandler($parser, $name, $attrs) {
    // ဒြပ်စင်၏ namespace ကိုရယူပါ
    $namespaceURI = isset($attrs['xmlns']) ? $attrs['xmlns'] : null;
    
    // element element အမည်များနှင့်၎င်းတို့၏ namespaces
    echo "Element ကိုစတင်ပါ:$name\n";
    if ($namespaceURI) {
        echo "တိုင်းရံURI:$namespaceURI\n";
    }
}

function endNamespaceDeclHandler($parser, $prefix) {
    echo "结束တိုင်းရံ:$prefix\n";
}

// ဖန်တီးXMLမိစ်ဆာ
$xmlParser = xml_parser_create();

// 设置Element ကိုစတင်ပါ和结束တိုင်းရံ声明的处理函数
xml_set_element_handler($xmlParser, "startElementHandler", "endElementHandler");
xml_set_end_namespace_decl_handler($xmlParser, "endNamespaceDeclHandler");

// ဝန်တင်XMLအချက်များ
$xmlData = <<<XML
<foo xmlns:ns="http://gitbox.net/ns">
  <ns:bar>Some data</ns:bar>
  <ns:baz>More data</ns:baz>
</foo>
XML;

// သုံးသပ်ကြည့်ရှုခြင်းXMLအချက်များ
if (!xml_parse($xmlParser, $xmlData)) {
    die(sprintf("XMLသုံးသပ်ကြည့်ရှုခြင်း错误: %s at line %d",
        xml_error_string(xml_get_error_code($xmlParser)),
        xml_get_current_line_number($xmlParser)));
}

// 释放မိစ်ဆာ资源
xml_parser_free($xmlParser);
?>

4 ။ code ခွဲခြမ်းစိတ်ဖြာ

  1. StartGelemeMALLER : Parser သည် start element ကိုတွေ့သောအခါ startelfandHandler ကို ခေါ်လိမ့်မည်။ ကျွန်ုပ်တို့သည် attribute array မှ namespace uri ကိုထုတ်ယူပြီး၎င်းကိုပုံနှိပ်ထုတ်ဝေသည်။ အကယ်. element တွင် namespace ရှေ့ဆက်တစ်ခုရှိပါကကျွန်ုပ်တို့သည်၎င်းကိုဤအချိန်တွင်၎င်းကိုကိုင်တွယ်နိုင်သည်။

  2. Entnamespecteclhandler : ဝေဖန်သူသည် Namespace ကြေငြာချက်၏အဆုံးကိုတွေ့သောအခါ endnameptace ကိုကြေ ငြာခြင်းအဆုံးသတ်သည်။ ဤတွင်ကျွန်ုပ်တို့သည် namespace ၏အဆုံးသတင်းအချက်အလက်ကိုစီမံခန့်ခွဲနိုင်သည်။

  3. XML_Parser_create : XML parser ကိုဖန်တီးပြီး XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်ပြင်ဆင်ပါ။

  4. XML_SEST_ELEMEMETER_HANDLER : STARTESEGEMERHANDER နှင့် ENDELEEMELERS ကို ENDENTESS ကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်ပြုလုပ်သည်။

  5. XML_SET_END_EnNamespace_Decl_handler : Namespace ကြေငြာချက်ရဲ့အဆုံးမှာ functler function ကို handler function ကို set အဖြစ်သတ်မှတ်ပါ။

  6. XML_Parse : xml ကြိုးများကို parses နှင့်သက်ဆိုင်ရာအဖြစ်အပျက်ကိုင်တွယ်ဖြေရှင်းခြင်းလုပ်ငန်းစဉ်အတွင်းအစပျိုးလိမ့်မည်။

  7. XML_Parser_Free_FREE : XML parser အရင်းအမြစ်များကိုလွှတ်ပါ။