လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML အဖွဲ့အစည်းများ (ထိုကဲ့သို့သောကဲ့သို့သော & amp;) ၏ပြ problem နာကို XML_Parse တွင်စနစ်တကျကိုင်တွယ်ခြင်းမရှိပါ

XML အဖွဲ့အစည်းများ (ထိုကဲ့သို့သောကဲ့သို့သော & amp;) ၏ပြ problem နာကို XML_Parse တွင်စနစ်တကျကိုင်တွယ်ခြင်းမရှိပါ

M66 2025-05-13

PHP တွင် XML_PARSES သည် XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်အတွက်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် XML ကြိုးများကို parser မှတဆင့်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် php အဆောက်အအုံများသို့ပြောင်းသည်။ သို့သော် developer များက XML_Parse function ကိုအသုံးပြုသောအခါတစ်ခါတစ်ရံတွင်သူတို့ကတစ်ခါတစ်ရံတွင်ပြ a နာတစ်ခုရှိသည် ဤဆောင်းပါးသည်ဤပြ problem နာအတွက်အကြောင်းတရားများနှင့်ဖြေရှင်းနည်းများကိုဆွေးနွေးပါမည်။

1 ။ XML entity ဆိုတာဘာလဲ။

XML စာရွက်စာတမ်းများတွင်အဖွဲ့အစည်းများသည်အချို့သောဇာတ်ကောင်များ၏အခြားရွေးချယ်စရာကိုယ်စားလှယ်များဖြစ်ကြသည်။ ဥပမာအားဖြင့်, & amp; & ဇာတ်ကောင်ကိုကိုယ်စားပြုနှင့် & lt ကိုကိုယ်စားပြုတယ်။ < ဇာတ်ကောင်ကိုကိုယ်စားပြုတယ်။ ဤအဖွဲ့အစည်းများသည် XML syntax နှင့်အတူပ conflicts ိပက်ခများနှင့် conflicts ိပက်ခများနှင့် conflicts ိပက်ခများကိုရှောင်ရှားရန် နှင့် အဖွဲ့အစည်းများနှင့်ချိတ်ဆက်ရန်အသုံးပြုသည်။

ယေဘုယျအားဖြင့် Entity သင်္ကေတများသည်ပုံစံနှစ်မျိုးဖြင့်ဖြစ်သည်။

  • ထိုကဲ့သို့သော ကဲ့သို့သောကြိုတင်သတ်မှတ်ထားသည့်အဖွဲ့အစည်းများ, & lt; စသည်တို့

  • XML စာရွက်စာတမ်းများတွင်တိကျသောသင်္ကေတများအဖြစ်သတ်မှတ်နိုင်သောစိတ်ကြိုက်အဖွဲ့အစည်းများ။

သို့သော်အချို့ဖြစ်ရပ်များတွင် string တစ်ခုဖွဲ့စည်းရန် entity တစ်ခုထွက်ပြေးတိမ်းရှောင်နိုင်သည် ။ amp; ဆိုလိုသည်မှာ၎င်းသည်အမှန်တကယ် entity တစ်ခု နှင့် amp တစ်ခုဖြစ်သည်

2 ။ XML_PARSSE function နှင့် entity parsing

XML အချက်အလက်များကိုထုတ်လုပ်သည့်အခါ PHP တွင် XML_Parse function သည် Entity ဇာတ်ကောင်များကိုစံ xml ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာစည်းမျဉ်းများအရ Entity ဇာတ်ကောင်များဖြစ်သည်။ ပုံမှန်အခြေအနေများတွင် XML_PARSESE သည် amp ပြောင်းလဲလိမ့်မည် to & lt; XML စာရွက်စာတမ်း၏ကြေ ငြာ ချက်နှင့်အခြေအနေအပေါ် အခြေခံ. အခြားအဖွဲ့အစည်းများအားမှန်ကန်စွာကိုင်တွယ်ပါ။

သို့သော်ပြနာများသောအားဖြင့်ဖြစ်လျှင်

(1) နှစ်ဆမှလွတ်မြောက်ရန် entity

အကယ်. XML ရှိအဖွဲ့အစည်းများ (ဥပမာ & amp; amp; amp; amp; amp; ), XML_Parse function ကိုထပ်မံမခွဲပါ။ ဘာဖြစ်လို့လဲဆိုတော့ XML , amp မှာရှိတဲ့အတွက် amp; ခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည့် entity မဟုတ်ဘဲပုံမှန် string ကိုစဉ်းစားသည်။ ရိုးရိုးလေးပြောရရင် amp; amp; တကယ်တော့မှထွက်ပေါက်ပုံစံ တစ်ခုဖြစ်ပြီး မူရင်းသင်္ကေတ နှင့် amp သို့အလိုအလျောက်ပြောင်းလဲမည်မဟုတ်ပါ။

(2) စိတ်ကြိုက်အဖွဲ့အစည်းများကိုမကိုင်တွယ်ပါနှင့်

အကယ်. စိတ်ကြိုက်အဖွဲ့အစည်းများကို XML တွင်သတ်မှတ်ထားပါက XML_Parse သည် အထူးသဖြင့် DTD ကိုစနစ်တကျကြေငြာခြင်းမရှိပါက DTD (စာရွက်စာတမ်းအမျိုးအစား) သို့မဟုတ် xml entity သို့မဟုတ် xml အဖွဲ့အစည်းများအားစနစ်တကျမဖော်ပြပါက၎င်းတို့ကို XML_Parse က၎င်းတို့အားမလုပ်ဆောင်နိုင်ပါ။

3 ။ ဖြေရှင်းနည်း

အထက်ပါပြ problems နာများကိုဖြေရှင်းရန်အောက်ပါဖြေရှင်းနည်းများကိုသင်ယူနိုင်သည်။

(1) entity processing ကိုကိုင်တွယ်

ဤကဲ့သို့သောအခြေအနေမျိုးကြုံတွေ့ရပါကဤနှစ်ထပ်ထွက်ပြေးတိမ်းရှောင်သည့်အဖွဲ့အစည်းများကို ခွဲခြမ်းစိတ်ဖြာခြင်း မပြုမီသင်ကိုယ်တိုင်အစားထိုးနိုင်သည်။ ၎င်းကို strow_replace ကို သုံး. အောင်မြင်နိုင်သည်။ ဥပမာအားဖြင့်:

 $xmlString = str_replace('&amp;amp;', '&amp;', $xmlString);

ဤကုဒ်သည် & amp အစားထိုး; amp; & amp; ပြီးတော့အဲဒါကိုခွဲခြမ်းစိတ်တူ။ ဤချဉ်းကပ်နည်းသည်တိကျသောအဖွဲ့အစည်းများရှိသည့်အခြေအနေများအတွက်သင့်တော်ကြောင်းသတိပြုပါ။

(2) Simplexml_load_string ကို သုံးပါ

XML_Parse function သည်အလုံအလောက်ပြောင်းလွယ်ပြင်လွယ်မဟုတ်ကြောင်းသင်တွေ့ရှိပါက XML ဒေတာကိုခွဲခြမ်းစိတ်ဖြာရန် SimplexMl_load_string ကို အသုံးပြုရန်စဉ်းစားနိုင်သည်။ ၎င်းသည်အဖွဲ့အစည်းများကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်နိုင်ပြီးသန့်ရှင်းသော interface ကိုပေးနိုင်သည်။ ဥပမာအားဖြင့်:

 $xmlString = str_replace('&amp;amp;', '&amp;', $xmlString);
$xml = simplexml_load_string($xmlString);

Simplexml function သည်များသောအားဖြင့်သာမန် XML အဖွဲ့အစည်းများအားပိုမိုနားလည်သဘောပေါက်နိုင်သည်။

(3) ပိုမိုအဆင့်မြင့် XML parser ကိုသုံးပါ

သင်၏လျှောက်လွှာလိုအပ်ချက်များသည်ပိုမိုရှုပ်ထွေးပြီးစိတ်ကြိုက်အဖွဲ့အစည်းများသို့မဟုတ် DTDs များပါ 0 င်ပါကအခြား XML parsing စာကြည့်တိုက်များ အသုံးပြု. XMLReader ကဲ့သို့သော XMLREDER စာကြည့်တိုက်များအသုံးပြုခြင်းကိုသင်စဉ်းစားလိုပေမည်။

4 ။ Code ဥပမာ

XML ရှိအဖွဲ့အစည်းများနှင့် XML_PARSSE function ကို အသုံးပြု. ခွဲခြမ်းစိတ်ဖြာနည်းကိုပြသသည့်အပြည့်အစုံဥပမာတစ်ခုရှိသည်။

 $xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<root>
    <example>&amp;amp;</example>
    <data>Some data</data>
</root>';

// နှစ်ထပ်ထွက်ပြေးတိမ်းရှောင်သောအဖွဲ့အစည်းများကိုအစားထိုးပါ
$xmlString = str_replace('&amp;amp;', '&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 ကိုခွဲခြမ်းစိတ်ဖြာ။ အမှားတစ်ခုရှိလျှင်ခွဲခြမ်းစိတ်ဖြာသည်အမှားအယွင်းတစ်ခုသို့ပြန်လာလိမ့်မည်။