PHP ကို XML အချက်အလက်များကိုအသုံးပြုသောအခါ SimplexMl_load_string သည် XML ကြိုးများကိုလွယ်ကူစွာဝင်ရောက်ခြင်းနှင့်ခြယ်လှယ်ရန်အတွက် XML ကြိုးများကိုအရာဝတ်ထုအဆောက်အအုံများအဖြစ်ပြောင်းလဲခြင်းဖြစ်သည်။ သို့သော် developer များစွာသည် XML နှင့်အတူ XML ကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါဘုံပြ problem နာတစ်ခုနှင့်ကြုံတွေ့ရသည် ။
ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုအသေးစိတ်လေ့လာပြီးသင့်အားဆောင်းပါးတစ်ပုဒ်တွင်သူတို့ကိုနားလည်ရန်နှင့်ဖြေရှင်းရန်ရှင်းလင်းသောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
နမူနာတစ်ခုပါ 0 င်သည့် XML string တစ်ခုဖြစ်သည့်ဥပမာတစ်ခုကိုပထမအကြိမ်ကြည့်ကြစို့။
<span><span><span class="hljs-meta"><?xml version=<span class="hljs-string">"1.0"</span></span></span><span>?>
</span><span><span class="hljs-tag"><<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>>
</span><span><span class="hljs-tag"><<span class="hljs-name">h:table</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">h:tr</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">h:td</span></span></span><span>>Apples</span><span><span class="hljs-tag"></<span class="hljs-name">h:td</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">h:td</span></span></span><span>>Bananas</span><span><span class="hljs-tag"></<span class="hljs-name">h:td</span></span></span><span>>
</span><span><span class="hljs-tag"></<span class="hljs-name">h:tr</span></span></span><span>>
</span><span><span class="hljs-tag"></<span class="hljs-name">h:table</span></span></span><span>>
</span><span><span class="hljs-tag"></<span class="hljs-name">root</span></span></span><span>>
</span></span>
ကျွန်ုပ်တို့သည်အောက်ပါကုဒ်ကို သုံး. ခွဲခြမ်းစိတ်ဖြာရန်ကြိုးစားပါက -
<span><span><span class="hljs-variable">$xmlString</span></span><span> = <span class="hljs-string"><<<XML
<?xml version="1.0"?>
<root xmlns:h="http://www.w3.org/TR/html4/">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
</root>
XML</span>;
</span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$xml</span></span><span>->table);
</span></span>
$ XML-> TABLE သည် ရလဒ်များကိုမပြန်မလာဟုသင်တွေ့လိမ့်မည်။ ဘာကြောင့်လဲဆိုတော့ SmanyxMl_load_string က ရှေ့တန်း က prefixed namespace tags တွေကိုမကိုင်တွယ်နိုင်လို့ပဲ။
XML တွင် element name ပ conflicts ိပက်ခများကိုရှောင်ရှားရန်အမည်စာရင်းများကိုအသုံးပြုသည်။ ဥပမာအားဖြင့် ဇ င - ဇယား သည် XMLNS ကိုညွှန်ပြသောရည်ညွှန်းရှေ့ဆက်တစ်ခုဖြစ်ပြီး H = "http://www.w3.org/ttml4/" ၎င်းသည် XML ကိုပိုမိုကျယ်ပြန့်စွာကျယ်ကျယ်ပြန့်ပြန့်ဖွဲ့စည်းထားသော်လည်းထပ်ဆင့်ခွဲခြမ်းစိတ်ဖြာရန်အခက်အခဲများကြုံတွေ့စေသည်။
ကျွန်ုပ်တို့သည် Simplexmleleme Class မှပေးထားသော ကလေးများ () နှင့် GetNamesptiones () ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-variable">$namespaces</span></span><span> = </span><span><span class="hljs-variable">$xml</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getNamespaces</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// ရလဒ်ရလဒ်:['h' => 'http://www.w3.org/TR/html4/']</span></span><span>
</span></span>
<span><span><span class="hljs-variable">$h</span></span><span> = </span><span><span class="hljs-variable">$xml</span></span><span>-></span><span><span class="hljs-title function_ invoke__">children</span></span><span>(</span><span><span class="hljs-variable">$namespaces</span></span><span>[</span><span><span class="hljs-string">'h'</span></span><span>]);
</span><span><span class="hljs-variable">$tr</span></span><span> = </span><span><span class="hljs-variable">$h</span></span><span>->table->tr;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$tr</span></span><span>->td </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$td</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$td</span></span><span> . PHP_EOL;
}
</span></span>
ရလဒ်ရလဒ် -
<span><span><span class="hljs-attribute">Apples</span></span><span>
Bananas
</span></span>
ဒေတာကိုရယူရန် XPathery Method ကိုသုံးလိုပါက namespace ကို revegistpathernesterpace method မှတဆင့်မှတ်ပုံတင်နိုင်သည်။
<span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-variable">$xml</span></span><span>-></span><span><span class="hljs-title function_ invoke__">registerXPathNamespace</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">$xml</span></span><span>-></span><span><span class="hljs-title function_ invoke__">xpath</span></span><span>(</span><span><span class="hljs-string">'//h:td'</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$tds</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$td</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$td</span></span><span> . PHP_EOL;
}
</span></span>
ဤချဉ်းကပ်မှုသည် semantically ရှင်းလင်းရုံသာမကရှုပ်ထွေးသော XML အဆောက်အအုံများနှင့်ဆက်ဆံရာတွင်ပိုမိုပြောင်းလွယ်ပြင်လွယ်ရှိပါသည်။
SimplexML_load_string ကို xml ကို namespace နဲ့ parse နဲ့ parse လုပ်ဖို့သုံးတဲ့အခါကလေးတွေကိုလက်လှမ်းမမီနိုင်ကြောင်းသင်တွေ့ရှိပါက XML သည်မမှန်ကန်ကြောင်းသံသယမထားပါနှင့်။ BeatureSte () , GetNamesptions () နှင့် recordnappitogeshace () နည်းလမ်းများကိုကောင်းစွာအသုံးပြုခြင်းနှင့်ကောင်းမွန်စွာအသုံးပြုပါ။
ကိုင်တွယ်ပုံသည်တစ်ချိန်ကကျွမ်းကျင်ပြီးသည်နှင့်တစ်ချိန်ကကျွမ်းကျင်သော XML ဒေတာရင်းမြစ်အမျိုးမျိုးကိုချောမွေ့စွာဆက်သွယ်နိုင်ပြီး PHP application များ၏ပေါင်းစည်းမှုစွမ်းရည်များကိုပိုမိုချောမွေ့စွာဆက်သွယ်နိုင်သည်။ ဒီဆောင်းပါးကဒီစာစောင်ကိုနှိုက်နှိုက်ချွတ်ချွတ်နားလည်ဖို့ဒီဆောင်းပါးကကူညီပေးနိုင်တယ်လို့မျှော်လင့်ပါတယ်။