PHP တွင် XML_PARESE သည် XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသောအဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ XML parser ( XML_Parser_Create ) ကို XML ကြိုးများကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ခွဲစိတ်မှုဆိုင်ရာအချက်အလက်များမှတစ်ဆင့် parsback function ကိုဖြစ်ပေါ်စေသည်။ ဤဆောင်းပါးသည် XML_Parse ကို XML_Parse ကို အသုံးပြု. XML ကြိုးများကို အသုံးပြု. ခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်းမှန်မှန်ကန်ကန်ကိုင်တွယ်ရန်မည်သို့ကိုင်တွယ်ရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
PHP တွင် XML parser ဥပမာအားဖြင့် XML_Parser_create () ကို အသုံးပြု. အကောင်အထည်ဖော်နိုင်သည့် XML parser ဥပမာတစ်ခုကိုဖန်တီးရန်လိုအပ်သည်။
<?php
$parser = xml_parser_create();
ဤ $ parser variable သည် XML parser ၏အရင်းအမြစ်လက်ကိုင်ဖြစ်ပြီးနောက်ဆက်တွဲခွဲခြမ်းစိတ်ဖြာလုပ်ဆောင်မှုများကို၎င်းအပေါ် အခြေခံ. လုပ်ဆောင်ရန်လိုအပ်သည်။
XML ခွဲခြမ်းစိတ်ဖြာခြင်းသည်အဖြစ်အပျက်များကိုမောင်းနှင်နေပြီး XML အချက်အလက်များ၏အစိတ်အပိုင်းများကိုကိုင်တွယ်ရန် Callback လုပ်ဆောင်ချက်များကိုသတ်မှတ်ရန်လိုအပ်သည်။ ဥပမာ, Start tag, end tag နှင့် character data အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာသောအခါကျွန်ုပ်တို့မည်သို့လုပ်ဆောင်သည်ကိုသတ်မှတ်နိုင်သည်။
function startElement($parser, $name, $attrs) {
echo "tag ကိုစတင်ပါ: $name\n";
if (!empty($attrs)) {
echo "ဉစ်စာပစ္စည်းများ:\n";
foreach ($attrs as $key => $value) {
echo " - $key: $value\n";
}
}
}
function endElement($parser, $name) {
echo "tag tag: $name\n";
}
function characterData($parser, $data) {
echo "ဇာတ်ကောင်ဒေတာ: " . trim($data) . "\n";
}
ထိုအခါကျွန်ုပ်တို့သည်ဤ callback ကို xml_set_element_handler () နှင့် xml_set_character_data_handler ကို သုံး. parser သို့တွဲဖက်လုပ်ဆောင်သည် () -
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
ယခုကျွန်ုပ်တို့သည် XML_Parse ကို အသုံးပြု. XML ကြိုးများကိုပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်:
$xmlData = <<<XML
<root>
<item id="1">ပထမ ဦး ဆုံးစီမံကိန်း</item>
<item id="2">ဒုတိယစီမံကိန်း</item>
</root>
XML;
if (!xml_parse($parser, $xmlData, true)) {
die(sprintf("XML အမှားခွဲခြမ်းစိတ်ဖြာခြင်း: %s လုပ်ငန်းစဉ်၌ %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
ဒီဥပမာမှာ xml ဖွဲ့စည်းပုံကိုသတ်မှတ်ပြီး XML_Parse () ကိုသုံးပြီးခွဲခြမ်းစိတ်ဖြာပါ။ ခွဲခြမ်းစိတ်ဖြာခြင်းပျက်ကွက်လျှင် XML_Get_error_code () နှင့် xml_error_string () နှင့် xml_error_string () () နှင့် XML_ERRORR_STRINE () () နှင့် XML_Error_String () ကို သုံးပါ။
XML parser ကိုအသုံးပြုပြီးနောက်အရင်းအမြစ်ကိုထုတ်ပြန်သင့်သည်။
xml_parser_free($parser);
Parsued XML ပါဝင်မှုသည်အောက်ပါအတိုင်းဖြစ်သည် -
<root>
<item id="1">ပထမ ဦး ဆုံးစီမံကိန်း</item>
<item id="2">ဒုတိယစီမံကိန်း</item>
</root>
script ကိုကွပ်မျက်ပြီးနောက်, output ရလဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
tag ကိုစတင်ပါ: ROOT
tag ကိုစတင်ပါ: ITEM
ဉစ်စာပစ္စည်းများ:
- ID: 1
ဇာတ်ကောင်ဒေတာ: ပထမ ဦး ဆုံးစီမံကိန်း
tag tag: ITEM
tag ကိုစတင်ပါ: ITEM
ဉစ်စာပစ္စည်းများ:
- ID: 2
ဇာတ်ကောင်ဒေတာ: ဒုတိယစီမံကိန်း
tag tag: ITEM
tag tag: ROOT
XML_Parse () က xml ဒေတာများကိုဥပမာမမှန်ကန်ပါက, ဥပမာ -
<root>
<item>unclesed tags များ
</root>
ယခုအချိန်တွင် XML_Parse () သည် မှားယွင်းစွာ ပြန်ယူပြီးခွဲခြမ်းစိတ်ဖြာခြင်းအမှားကိုလွှင့်ပစ်လိမ့်မည်။ XML_ERROR_STRING မှတဆင့်အမှားအချက်အလက်များကိုသင်ရနိုင်သည်။
အကယ်. XML ဖိုင်သည်ကြီးမားပါက segmented parsing method ကိုသုံးနိုင်သည်။
$fp = fopen("http://m66.net/example.xml", "r");
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
die(sprintf("XML အမှားခွဲခြမ်းစိတ်ဖြာခြင်း: %s လုပ်ငန်းစဉ်၌ %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
}
fclose($fp);
၎င်းသည် XML ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းကြောင့်ဖြစ်သောမှတ်ဥာဏ်လျှံလျှပ်ကူးပစ္စည်းများကိုရှောင်ရှားနိုင်သည်။
XML_Parsse ကို PHP တွင် XML ဒေတာများကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်ထိရောက်သောနည်းလမ်းတစ်ခုဖြစ်သည်။ သို့သော် callback function ကိုကွဲပြားခြားနားသောခွဲခြမ်းစိတ်ဖြာမှုများပြုလုပ်ရန်မှန်ကန်စွာသတ်မှတ်ရန်လိုအပ်သည်။ ထို့အပြင် XML parsing အမှားများနှင့်ကြီးမားသောဖိုင်တွဲလုပ်ငန်း၏ကိုင်တွယ်ခြင်းမှာအစီအစဉ်အား 0 င်ရောက်ခြင်းကိုတိုးတက်စေရန်အတွက်သော့ချက်ဖြစ်သည်။ ဤဆောင်းပါးသည် PHP ၏ XML parsing function ကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့်ကျင့်သုံးရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။