XML ခွဲခြမ်းစိတ်ဖြာခြင်းတွင် Namespace Management သည်အလွန်အရေးကြီးသောအလုပ်တစ်ခုဖြစ်သည်။ XML_SEST_START_ELATTOMETE_Handler နှင့် XML_SESSE_ENDNAMNAMNAMNERS_DECLLERLERS ကို XML စာရွက်စာတမ်းများတွင် Names စာရွက်စာတမ်းများကိုပိုမိုကောင်းမွန်သောကိုင်တွယ်နိုင်သည့် XML_set_Ennamespace_Decl_Handler ကိုထောက်ပံ့ပေးသည်။
ဤဆောင်းပါးတွင်ဤလုပ်ဆောင်ချက်နှစ်ခုမှတဆင့်အမည်များကိုထိရောက်စွာစီမံခန့်ခွဲမှုရရှိရန်မည်သို့အသေးစိတ်လေ့လာမည်နည်း။
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 များကို သတ်မှတ်သည် ။
PHP သည်အလွန်အသုံးဝင်သော xml parsing farmsing farming လုပ်ဆောင်ချက်များကိုပေးသည်။
XML_set_Start_element_Handler : ဒီ function ကို START Element ကိုကြုံတွေ့ရတဲ့အခါ,
XML_SESS_END_EnD_ENDPASTACHADE_DECL_Handler : Namespace ကြေငြာချက်တွေကိုကူညီနိုင်တဲ့ namespace ကြေငြာချက်ကိုခွဲခြမ်းစိတ်ဖြာတဲ့အခါဒီ function ကိုခေါ်တဲ့အခါ။
ဤနှစ်ခုလုပ်ဆောင်ချက်နှစ်ခုပေါင်းစပ်ခြင်းအားဖြင့် XML ရှိအမည်များကိုခွဲခြမ်းစိတ်ဖြာနိုင်ပြီးထိရောက်စွာစီမံနိုင်သည်။
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);
?>
StartGelemeMALLER : Parser သည် start element ကိုတွေ့သောအခါ startelfandHandler ကို ခေါ်လိမ့်မည်။ ကျွန်ုပ်တို့သည် attribute array မှ namespace uri ကိုထုတ်ယူပြီး၎င်းကိုပုံနှိပ်ထုတ်ဝေသည်။ အကယ်. element တွင် namespace ရှေ့ဆက်တစ်ခုရှိပါကကျွန်ုပ်တို့သည်၎င်းကိုဤအချိန်တွင်၎င်းကိုကိုင်တွယ်နိုင်သည်။
Entnamespecteclhandler : ဝေဖန်သူသည် Namespace ကြေငြာချက်၏အဆုံးကိုတွေ့သောအခါ endnameptace ကိုကြေ ငြာခြင်းအဆုံးသတ်သည်။ ဤတွင်ကျွန်ုပ်တို့သည် namespace ၏အဆုံးသတင်းအချက်အလက်ကိုစီမံခန့်ခွဲနိုင်သည်။
XML_Parser_create : XML parser ကိုဖန်တီးပြီး XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်ပြင်ဆင်ပါ။
XML_SEST_ELEMEMETER_HANDLER : STARTESEGEMERHANDER နှင့် ENDELEEMELERS ကို ENDENTESS ကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်ပြုလုပ်သည်။
XML_SET_END_EnNamespace_Decl_handler : Namespace ကြေငြာချက်ရဲ့အဆုံးမှာ functler function ကို handler function ကို set အဖြစ်သတ်မှတ်ပါ။
XML_Parse : xml ကြိုးများကို parses နှင့်သက်ဆိုင်ရာအဖြစ်အပျက်ကိုင်တွယ်ဖြေရှင်းခြင်းလုပ်ငန်းစဉ်အတွင်းအစပျိုးလိမ့်မည်။
XML_Parser_Free_FREE : XML parser အရင်းအမြစ်များကိုလွှတ်ပါ။