PHP တွင် quather query တွင်အမည်များကိုမှတ်ပုံတင်ရန် registerxpather new method ကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ သို့သော် developer များစွာသည်ဤနည်းလမ်းကိုအသုံးပြုသောအခါပြ problems နာများကြုံတွေ့ရသည်။ ဤဆောင်းပါးသည်ဤအကြောင်းရင်းများကိုတူးဖော်ပြီးဖြေရှင်းနည်းအချို့ပေးလိမ့်မည်။
ပထမ ဦး စွာ XPath Namespace ၏အခြေခံသဘောတရားများကိုသုံးသပ်ကြည့်ကြစို့။ XML စာရွက်စာတမ်းများတွင်ဒြပ်စင်နှင့် attribute များသည်ကွဲပြားခြားနားသော namespace များနှင့်သက်ဆိုင်နိုင်သည်။ အကယ်. သင်၏ XML တွင်အမည်စာရင်းများပါ 0 င်ပါက XPath မေးမြန်းချက်များကိုကွပ်မျက်သည့်အခါ Namespace ၏သွဇာကိုထည့်သွင်းစဉ်းစားရမည်။ XPAPH ဖော်ပြချက်များအတွက်အမည်များကိုမှတ်ပုံတင်ရန် RegisterxPatherNespace ကိုအသုံးပြုသည်။
$dom = new DOMDocument();
$dom->loadXML('<root xmlns:ns="http://example.com"><ns:element ns:attr="value"/></root>');
// namespace ကိုမှတ်ပုံတင်ပါ
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('ns', 'http://example.com');
// သွားXPathquery element property များ
$query = '//ns:element/@ns:attr';
$nodes = $xpath->query($query);
foreach ($nodes as $node) {
echo $node->nodeValue;
}
အထက်ပါကုဒ်တွင်ကျွန်ုပ်တို့သည် element ၏ attribute များကို namespace မှတဆင့်အောင်မြင်စွာမေးမြန်းနိုင်သည်။
islationshippitteNathace ကို အသုံးပြုနေလျှင်ပင်လျှင်ပင် attribute များကိုမေးမြန်းခြင်းမပြုနိုင်ပါ။
namespace ကို XPathery တွင်မှန်ကန်စွာအသုံးပြုကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်, ဂုဏ်သတ္တိများကိုရှာဖွေခြင်းတွင် attribute ၏ namespace ကို @ns: Atto attrie ။ အကယ်. သင်သည် namespace ကိုလက်လွတ်လျှင်,
Namespace ရှေ့ဆက်ကို RegisterxPathernesnShace တွင်မှတ်ပုံတင်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်, သင်သည် 'NS' ကို ရှေ့ဆက်အဖြစ်မှတ်ပုံတင်ပါက NS: attribute ကိုရယူရန် attribute တွင်အသုံးပြုသင့်သည်။ အကယ်. ရှေ့ဆက်များသည်ကိုက်ညီမှုမရှိပါကမေးမြန်းမှုသည်လည်းကျရှုံးလိမ့်မည်။
$xpath->registerNamespace('ns', 'http://example.com');
$query = '//ns:element/@ns:attr'; // မှန်ကန်စွာ namespace ရှေ့ဆက်ကိုသုံးပါ
တခါတရံတွင် XML စာရွက်စာတမ်း၏ namespace အဓိပ္ပါယ်ဖွင့်ဆိုချက်သည်မပြည့်စုံပါ။ XML စာရွက်စာတမ်းရှိ Namespace သည်မှန်ကန်ကြောင်းအတည်ပြုပြီး,
Enser attribute attribute တွေကိုမမေးနိုင်တဲ့ပြ a နာတခုကိုသင်ကြုံတွေ့ရပါက၎င်းတို့ကိုဖြေရှင်းရန်နှင့်ဖြေရှင်းရန်အောက်ပါအဆင့်များကိုသင်လိုက်နာနိုင်သည်။
ပထမ ဦး စွာသင် regisgexpathewace method ကိုအသုံးပြုသောအခါ Namespace ၏ရှေ့ဆက်သည်စုံစမ်းမှုတွင်အသုံးပြုသောရှေ့ဆက်နှင့်အတူတူပင်ဖြစ်သည်။ အကယ်. Namespace ကိုမှန်ကန်စွာမှတ်ပုံတင်ထားခြင်းမရှိပါက XPathery သည်၎င်း၏ဂုဏ်သတ္တိများနှင့်၎င်း၏ဂုဏ်သတ္တိများကိုအသိအမှတ်မပြုပါ။
$xpath->registerNamespace('ns', 'http://example.com');
သင်၏ XPathery Syntax သည်အမှားအယွင်းများကိုသေချာအောင်လုပ်ပါ။ ဥပမာ attribute quality quality attribute များ, @ သင်္ကေတသည် attribute များကိုကိုယ်စားပြုပြီး namespace ရှေ့ဆက်ကိုသတ်မှတ်ရန်အသုံးပြုရမည်။
$query = '//ns:element/@ns:attr'; // namespace ရှေ့ဆက်ဖို့အာရုံစိုက်ပါ
အကယ်. အထက်ဖော်ပြပါနည်းလမ်းများမှပြ the နာကိုမဖြေရှင်းနိုင်ပါက nampace-uri () function ကို XPath တွင်အသုံးပြုရန်စဉ်းစားပါ။ ဤချဉ်းကပ်နည်းသည်တစ်ခါတစ်ရံတွင် namespace resolution ပြ problems နာများကိုကျော်လွှားနိုင်ရန်ကူညီနိုင်သည်။
$url = 'http://m66.net'; // အသုံးပြုm66.netDebugging အတွက်အစစ်အမှန်ဒိုမိန်းအမည်များကိုအစားထိုးပါ