လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML query လုပ်ဆောင်နိုင်စွမ်းကိုတိုးချဲ့ရန် CustomPathnessPureShime ကိုမည်သို့ပေါင်းစပ်မည်နည်း။

XML query လုပ်ဆောင်နိုင်စွမ်းကိုတိုးချဲ့ရန် CustomPathnessPureShime ကိုမည်သို့ပေါင်းစပ်မည်နည်း။

M66 2025-07-08

DomDocument နှင့် Domxpath တို့သည် PHP ကို ​​XML အချက်အလက်များကို အသုံးပြု. PHP ကိုအသုံးပြုသောအခါအလွန်အစွမ်းထက်သောကိရိယာနှစ်ခုဖြစ်သည်။ အထူးသဖြင့်ရှုပ်ထွေးသော XML Queries များလိုအပ်ပါက Namespace နှင့် XPath Expressions များကိုအသုံးပြုခြင်းသည်ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်တိကျမှန်ကန်မှုကိုများစွာတိုးတက်စေနိုင်သည်။ သင်၏ XML စုံစမ်းမှုစွမ်းရည်ကိုတိုးချဲ့ရန်နှင့်မြှင့်တင်ရန် Regisnegathneshace Method နှင့် CustomPhathing function ကိုမည်သို့ပေါင်းစပ်ရမည်ကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ XPath တွင် namespace ၏အရေးပါမှုကိုနားလည်ပါ

များစွာသော XML စာရွက်စာတမ်းများတွင်ဒြပ်စင်နှင့် attribute များသည်များသောအားဖြင့် namespace ရှေ့ဆက်များရှိသည်။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">root</span></span></span><span> </span><span><span class="hljs-attr">xmlns:h</span></span><span>=</span><span><span class="hljs-string">"http://www.w3.org/TR/html4/"</span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;<span class="hljs-name">h:table</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">h:tr</span></span></span><span>&gt;
      </span><span><span class="hljs-tag">&lt;<span class="hljs-name">h:td</span></span></span><span>&gt;Apples</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">h:td</span></span></span><span>&gt;
      </span><span><span class="hljs-tag">&lt;<span class="hljs-name">h:td</span></span></span><span>&gt;Bananas</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">h:td</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;/<span class="hljs-name">h:tr</span></span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;/<span class="hljs-name">h:table</span></span></span><span>&gt;
</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">root</span></span></span><span>&gt;
</span></span>

<h: td> ကဲ့သို့သော node များကိုမှန်ကန်စွာမေးမြန်းရန် XPath Expression သည် prefix hate နှင့်သက်ဆိုင်သော nampate uri ကိုသိရန်လိုအပ်သည်။ ဒီဟာက registerxpathernesnespace ဟာအသုံးဝင်မှာပါ။

 <span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-variable">$xml</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">loadXML</span></span><span>(</span><span><span class="hljs-variable">$yourXmlString</span></span><span>);
</span><span><span class="hljs-variable">$xpath</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMXPath</span></span><span>(</span><span><span class="hljs-variable">$xml</span></span><span>);
</span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">registerNamespace</span></span><span>(</span><span><span class="hljs-string">"h"</span></span><span>, </span><span><span class="hljs-string">"http://www.w3.org/TR/html4/"</span></span><span>);
</span><span><span class="hljs-variable">$tds</span></span><span> = </span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"//h:td"</span></span><span>);
</span></span>

2 ။ XPATH လုပ်ဆောင်ချက်များကိုစိတ်ကြိုက်ပြုပြင်ခြင်းအတွက်လှုံ့ဆော်မှု

အကယ်. XPath Teaust သည်အစွမ်းထက်သော်လည်းအချို့သောစီးပွားရေးယုတ္တိဗေဒဆိုင်ရာအခြေအနေများတွင် built-in XPATH လုပ်ဆောင်ချက်များတွင်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်မည်မဟုတ်ပါ။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် Element တစ်ခု၏တန်ဖိုးသည်ဒေတာဘေ့စ်သို့မဟုတ်ခင်းကျင်းမှုတွင်ပုံရိပ်တစ်ခု၏တန်ဖိုးကိုဆုံးဖြတ်ရန်သို့မဟုတ်ပိုမိုရှုပ်ထွေးသော string processing လုပ်ဆောင်ခြင်းရှိမရှိဆုံးဖြတ်ရန်လုပ်ဆောင်လိုသည်။

PHP သည်ဓလေ့ထုံးစံများကို XPher သို့ထိုးသွင်းခြင်းမပံ့ပိုးနိုင်ပါ

သို့သော် namespace ကိုမှတ်ပုံတင်ရန်နှင့် XPLE Query ကိုမသုံးမီ XPath မေးမြန်းမှုကိုမသုံးမီ XML ကိုကြိုတင်မသုံးလေ့ရှိသည်။

3 ။ လက်တွေ့အမှုများသည် namespaces နှင့်စိတ်ကြိုက်ဟန်ချက်ညီညီပေါင်းစပ်ခြင်း

သင့်တွင် <item> node များနှင့်အတူ namespaces နှင့်အတူ node များပါဝင်သောအောက်ပါ XML စာရွက်စာတမ်းရှိသည်ဆိုပါစို့:

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">catalog</span></span></span><span> </span><span><span class="hljs-attr">xmlns:bk</span></span><span>=</span><span><span class="hljs-string">"http://example.com/book"</span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:item</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:title</span></span></span><span>&gt;PHP အစီအစဉ်</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:title</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:price</span></span></span><span>&gt;45</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:price</span></span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:item</span></span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:item</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:title</span></span></span><span>&gt;Java အစီအစဉ်</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:title</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">bk:price</span></span></span><span>&gt;55</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:price</span></span></span><span>&gt;
  </span><span><span class="hljs-tag">&lt;/<span class="hljs-name">bk:item</span></span></span><span>&gt;
</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">catalog</span></span></span><span>&gt;
</span></span>

သင် 50 ယွမ် 50 အောက်စျေးအတွက်စာအုပ်ခေါင်းစဉ်များအားလုံးကိုသင်မေးမြန်းလိုပါသည်။ XPATH ကိုယ်တိုင်ကကိန်းဂဏန်းနှိုင်းယှဉ်မှုကိုထောက်ခံသည်။

 <span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">registerNamespace</span></span><span>(</span><span><span class="hljs-string">"bk"</span></span><span>, </span><span><span class="hljs-string">"http://example.com/book"</span></span><span>);
</span><span><span class="hljs-variable">$nodes</span></span><span> = </span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"//bk:item[bk:price &lt; 50]/bk:title"</span></span><span>);

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$nodes</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$node</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$node</span></span><span>-&gt;nodeValue . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

အကယ်. ရှုပ်ထွေးသောယုတ္တိဗေဒကိုသင်အကောင်အထည်ဖော်လိုပါက (ဥပမာ - 50 အောက်ရှိစျေးနှုန်းနှင့်ခေါင်းစဉ်တွင် PHP ") တွင်ပါ 0 င်သည်။

 <span><span><span class="hljs-variable">$nodes</span></span><span> = </span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"//bk:item[bk:price &lt; 50 and contains(bk:title, 'PHP')]/bk:title"</span></span><span>);
</span></span>

သို့သော်ယုတ္တိဗေဒသည်ပိုမိုရှုပ်ထွေးပါက "Keyword table တွင်စကားလုံးများပါ 0 င်သည့်ခေါင်းစဉ်များပါ 0 င်သည့်ခေါင်းစဉ်များပါ 0 င်သော node များဖြင့်ထားခြင်း" ကဲ့သို့သောရလဒ်များကို Query ပြီးနောက်စိတ်ကြိုက် function ကို filter လုပ်ရန်လိုအပ်သည်။

 <span><span><span class="hljs-variable">$keywords</span></span><span> = [</span><span><span class="hljs-string">'PHP'</span></span><span>, </span><span><span class="hljs-string">'MySQL'</span></span><span>, </span><span><span class="hljs-string">'Laravel'</span></span><span>];
</span><span><span class="hljs-variable">$nodes</span></span><span> = </span><span><span class="hljs-variable">$xpath</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"//bk:item/bk:title"</span></span><span>);

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$nodes</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$node</span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$keywords</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$word</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stripos</span></span><span>(</span><span><span class="hljs-variable">$node</span></span><span>-&gt;nodeValue, </span><span><span class="hljs-variable">$word</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$node</span></span><span>-&gt;nodeValue . </span><span><span class="hljs-string">"\n"</span></span><span>;
            </span><span><span class="hljs-keyword">break</span></span><span>;
        }
    }
}
</span></span>

၎င်းသည် XPathery ရလဒ်ပြင်ပရှိယုတ္တိရှိသောအပြောင်းအလဲတစ်ခုဖြစ်သော်လည်း၎င်းသည် XPath Query စွမ်းရည်နှင့် PHP စိတ်ကြိုက်ဟန်ချက်ညီမှုများကိုပေါင်းစပ်ထားသည်။

4 ။ ကျယ်ပြန့်ဖတ်ရှုခြင်း - XSLT (အဆင့်မြင့်) နှင့်ပေါင်းစပ်။ ထုံးစံလုပ်ဆောင်ချက်များကိုသုံးပါ။

အကယ်. သင်သည် PHP လုပ်ဆောင်ချက်များကို XPath Legic ထဲသို့ထည့်သွင်းရန်လိုအပ်ပါက XPath Legic ထဲသို့ XPATHCONENSE နှင့် PHP Extension လုပ်ဆောင်ချက်များကိုပေါင်းစပ်စဉ်းစားပါ။ ဥပမာအားဖြင့်, PHP: functionstring ') ကိုမှတ်ပုံတင်ခြင်းဖြင့် (ဥပမာ - PHP: Forctionstring) ) မှတ်ပုံတင်ခြင်းဖြင့်တရားစီရင်ခြင်းဆိုင်ရာဆုံးဖြတ်ချက်များကိုအကောင်အထည်ဖော်ရန်ဖြစ်သည်