လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML_Parse ကိုအသုံးပြုပြီး XML ကြိုးများကိုမည်သို့ခွဲခြမ်းစိတ်ဖြာနည်း

XML_Parse ကိုအသုံးပြုပြီး XML ကြိုးများကိုမည်သို့ခွဲခြမ်းစိတ်ဖြာနည်း

M66 2025-05-13

PHP တွင် XML_PARESE သည် XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသောအဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ XML parser ( XML_Parser_Create ) ကို XML ကြိုးများကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ခွဲစိတ်မှုဆိုင်ရာအချက်အလက်များမှတစ်ဆင့် parsback function ကိုဖြစ်ပေါ်စေသည်။ ဤဆောင်းပါးသည် XML_Parse ကို XML_Parse ကို အသုံးပြု. XML ကြိုးများကို အသုံးပြု. ခွဲခြမ်းစိတ်ဖြာစဉ်အတွင်းမှန်မှန်ကန်ကန်ကိုင်တွယ်ရန်မည်သို့ကိုင်တွယ်ရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ XML parser ကိုဖန်တီးပါ

PHP တွင် XML parser ဥပမာအားဖြင့် XML_Parser_create () ကို အသုံးပြု. အကောင်အထည်ဖော်နိုင်သည့် XML parser ဥပမာတစ်ခုကိုဖန်တီးရန်လိုအပ်သည်။

 <?php
$parser = xml_parser_create();

$ parser variable သည် XML parser ၏အရင်းအမြစ်လက်ကိုင်ဖြစ်ပြီးနောက်ဆက်တွဲခွဲခြမ်းစိတ်ဖြာလုပ်ဆောင်မှုများကို၎င်းအပေါ် အခြေခံ. လုပ်ဆောင်ရန်လိုအပ်သည်။

2 ။ Parser ရဲ့ callback function ကိုသတ်မှတ်ပါ

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");

3 ။ XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်း

ယခုကျွန်ုပ်တို့သည် 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 () ကို သုံးပါ။

4 ။ parser အရင်းအမြစ်များကိုလွှတ်ပေးပါ

XML parser ကိုအသုံးပြုပြီးနောက်အရင်းအမြစ်ကိုထုတ်ပြန်သင့်သည်။

 xml_parser_free($parser);

5 ။ နမူနာ output ကို

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

6 ။ မကြာခဏမေးလေ့ရှိသောမေးခွန်းများ XML parsing တွင်ရှာပါ

6.1 တရားမဝင် XML ဒေတာတွေ့ရသည်

XML_Parse () က xml ဒေတာများကိုဥပမာမမှန်ကန်ပါက, ဥပမာ -

 <root>
    <item>unclesed tags များ
</root>

ယခုအချိန်တွင် XML_Parse () သည် မှားယွင်းစွာ ပြန်ယူပြီးခွဲခြမ်းစိတ်ဖြာခြင်းအမှားကိုလွှင့်ပစ်လိမ့်မည်။ XML_ERROR_STRING မှတဆင့်အမှားအချက်အလက်များကိုသင်ရနိုင်သည်။

6.2 ကြီးမားသောဖိုင်များကို streaming ခွဲခြမ်းစိတ်ဖြာခြင်းကိုင်တွယ်ခြင်း

အကယ်. 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 ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းကြောင့်ဖြစ်သောမှတ်ဥာဏ်လျှံလျှပ်ကူးပစ္စည်းများကိုရှောင်ရှားနိုင်သည်။

7 ။ နိဂုံးချုပ်

XML_Parsse ကို PHP တွင် XML ဒေတာများကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်ထိရောက်သောနည်းလမ်းတစ်ခုဖြစ်သည်။ သို့သော် callback function ကိုကွဲပြားခြားနားသောခွဲခြမ်းစိတ်ဖြာမှုများပြုလုပ်ရန်မှန်ကန်စွာသတ်မှတ်ရန်လိုအပ်သည်။ ထို့အပြင် XML parsing အမှားများနှင့်ကြီးမားသောဖိုင်တွဲလုပ်ငန်း၏ကိုင်တွယ်ခြင်းမှာအစီအစဉ်အား 0 င်ရောက်ခြင်းကိုတိုးတက်စေရန်အတွက်သော့ချက်ဖြစ်သည်။ ဤဆောင်းပါးသည် PHP ၏ XML parsing function ကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့်ကျင့်သုံးရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။