PHP တွင် XML_PARSES သည် XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်အတွက်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် XML ကြိုးများကို parser မှတဆင့်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် php အဆောက်အအုံများသို့ပြောင်းသည်။ သို့သော် developer များက XML_Parse function ကိုအသုံးပြုသောအခါတစ်ခါတစ်ရံတွင်သူတို့ကတစ်ခါတစ်ရံတွင်ပြ a နာတစ်ခုရှိသည် ။ ဤဆောင်းပါးသည်ဤပြ problem နာအတွက်အကြောင်းတရားများနှင့်ဖြေရှင်းနည်းများကိုဆွေးနွေးပါမည်။
XML စာရွက်စာတမ်းများတွင်အဖွဲ့အစည်းများသည်အချို့သောဇာတ်ကောင်များ၏အခြားရွေးချယ်စရာကိုယ်စားလှယ်များဖြစ်ကြသည်။ ဥပမာအားဖြင့်, & amp; & ဇာတ်ကောင်ကိုကိုယ်စားပြုနှင့် & lt ကိုကိုယ်စားပြုတယ်။ < ဇာတ်ကောင်ကိုကိုယ်စားပြုတယ်။ ဤအဖွဲ့အစည်းများသည် XML syntax နှင့်အတူပ conflicts ိပက်ခများနှင့် ပ conflicts ိပက်ခများနှင့် ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် နှင့် အဖွဲ့အစည်းများနှင့်ချိတ်ဆက်ရန်အသုံးပြုသည်။
ယေဘုယျအားဖြင့် Entity သင်္ကေတများသည်ပုံစံနှစ်မျိုးဖြင့်ဖြစ်သည်။
ထိုကဲ့သို့သော ကဲ့သို့သောကြိုတင်သတ်မှတ်ထားသည့်အဖွဲ့အစည်းများ, & lt; စသည်တို့
XML စာရွက်စာတမ်းများတွင်တိကျသောသင်္ကေတများအဖြစ်သတ်မှတ်နိုင်သောစိတ်ကြိုက်အဖွဲ့အစည်းများ။
သို့သော်အချို့ဖြစ်ရပ်များတွင် string တစ်ခုဖွဲ့စည်းရန် entity တစ်ခုထွက်ပြေးတိမ်းရှောင်နိုင်သည် ။ amp; ဆိုလိုသည်မှာ၎င်းသည်အမှန်တကယ် entity တစ်ခု နှင့် amp တစ်ခုဖြစ်သည် ။
XML အချက်အလက်များကိုထုတ်လုပ်သည့်အခါ PHP တွင် XML_Parse function သည် Entity ဇာတ်ကောင်များကိုစံ xml ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာစည်းမျဉ်းများအရ Entity ဇာတ်ကောင်များဖြစ်သည်။ ပုံမှန်အခြေအနေများတွင် XML_PARSESE သည် amp ပြောင်းလဲလိမ့်မည် ။ to & lt; XML စာရွက်စာတမ်း၏ကြေ ငြာ ချက်နှင့်အခြေအနေအပေါ် အခြေခံ. အခြားအဖွဲ့အစည်းများအားမှန်ကန်စွာကိုင်တွယ်ပါ။
သို့သော်ပြနာများသောအားဖြင့်ဖြစ်လျှင်
အကယ်. XML ရှိအဖွဲ့အစည်းများ (ဥပမာ & amp; amp; amp; amp; amp; ), XML_Parse function ကိုထပ်မံမခွဲပါ။ ဘာဖြစ်လို့လဲဆိုတော့ XML , amp မှာရှိတဲ့အတွက် amp; ခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည့် entity မဟုတ်ဘဲပုံမှန် string ကိုစဉ်းစားသည်။ ရိုးရိုးလေးပြောရရင် amp; amp; တကယ်တော့မှထွက်ပေါက်ပုံစံ တစ်ခုဖြစ်ပြီး မူရင်းသင်္ကေတ နှင့် amp သို့အလိုအလျောက်ပြောင်းလဲမည်မဟုတ်ပါ။
အကယ်. စိတ်ကြိုက်အဖွဲ့အစည်းများကို XML တွင်သတ်မှတ်ထားပါက XML_Parse သည် အထူးသဖြင့် DTD ကိုစနစ်တကျကြေငြာခြင်းမရှိပါက DTD (စာရွက်စာတမ်းအမျိုးအစား) သို့မဟုတ် xml entity သို့မဟုတ် xml အဖွဲ့အစည်းများအားစနစ်တကျမဖော်ပြပါက၎င်းတို့ကို XML_Parse က၎င်းတို့အားမလုပ်ဆောင်နိုင်ပါ။
အထက်ပါပြ problems နာများကိုဖြေရှင်းရန်အောက်ပါဖြေရှင်းနည်းများကိုသင်ယူနိုင်သည်။
ဤကဲ့သို့သောအခြေအနေမျိုးကြုံတွေ့ရပါကဤနှစ်ထပ်ထွက်ပြေးတိမ်းရှောင်သည့်အဖွဲ့အစည်းများကို ခွဲခြမ်းစိတ်ဖြာခြင်း မပြုမီသင်ကိုယ်တိုင်အစားထိုးနိုင်သည်။ ၎င်းကို strow_replace ကို သုံး. အောင်မြင်နိုင်သည်။ ဥပမာအားဖြင့်:
$xmlString = str_replace('&amp;', '&', $xmlString);
ဤကုဒ်သည် & amp အစားထိုး; amp; & amp; ပြီးတော့အဲဒါကိုခွဲခြမ်းစိတ်တူ။ ဤချဉ်းကပ်နည်းသည်တိကျသောအဖွဲ့အစည်းများရှိသည့်အခြေအနေများအတွက်သင့်တော်ကြောင်းသတိပြုပါ။
XML_Parse function သည်အလုံအလောက်ပြောင်းလွယ်ပြင်လွယ်မဟုတ်ကြောင်းသင်တွေ့ရှိပါက XML ဒေတာကိုခွဲခြမ်းစိတ်ဖြာရန် SimplexMl_load_string ကို အသုံးပြုရန်စဉ်းစားနိုင်သည်။ ၎င်းသည်အဖွဲ့အစည်းများကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်နိုင်ပြီးသန့်ရှင်းသော interface ကိုပေးနိုင်သည်။ ဥပမာအားဖြင့်:
$xmlString = str_replace('&amp;', '&', $xmlString);
$xml = simplexml_load_string($xmlString);
Simplexml function သည်များသောအားဖြင့်သာမန် XML အဖွဲ့အစည်းများအားပိုမိုနားလည်သဘောပေါက်နိုင်သည်။
သင်၏လျှောက်လွှာလိုအပ်ချက်များသည်ပိုမိုရှုပ်ထွေးပြီးစိတ်ကြိုက်အဖွဲ့အစည်းများသို့မဟုတ် DTDs များပါ 0 င်ပါကအခြား XML parsing စာကြည့်တိုက်များ အသုံးပြု. XMLReader ကဲ့သို့သော XMLREDER စာကြည့်တိုက်များအသုံးပြုခြင်းကိုသင်စဉ်းစားလိုပေမည်။
XML ရှိအဖွဲ့အစည်းများနှင့် XML_PARSSE function ကို အသုံးပြု. ခွဲခြမ်းစိတ်ဖြာနည်းကိုပြသသည့်အပြည့်အစုံဥပမာတစ်ခုရှိသည်။
$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<root>
<example>&amp;</example>
<data>Some data</data>
</root>';
// နှစ်ထပ်ထွက်ပြေးတိမ်းရှောင်သောအဖွဲ့အစည်းများကိုအစားထိုးပါ
$xmlString = str_replace('&amp;', '&', $xmlString);
// parser ဖန်တီးပါ
$parser = xml_parser_create();
// သုံးသပ်ကြည့်ရှုခြင်း XML ကြိုး
if (!xml_parse($parser, $xmlString, true)) {
echo "Error: " . xml_error_string(xml_get_error_code($parser));
} else {
echo "XML parsed successfully!";
}
// 释放သုံးသပ်ကြည့်ရှုခြင်း器
xml_parser_free($parser);
ဒီဥပမာမှာငါတို့ပထမ ဦး ဆုံး & amp ကိုအစားထိုး; amp; XML string ကိုအတွက် entity နှင့် xml_parse ကိုအသုံးပြုပြီး itse ကိုခွဲခြမ်းစိတ်ဖြာ။ အမှားတစ်ခုရှိလျှင်ခွဲခြမ်းစိတ်ဖြာသည်အမှားအယွင်းတစ်ခုသို့ပြန်လာလိမ့်မည်။