လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML ဒေတာများကိုဒေါင်းလုပ်လုပ်ရန် XML_Parse နှင့် curl ပေါင်းစပ်ခြင်း

XML ဒေတာများကိုဒေါင်းလုပ်လုပ်ရန် XML_Parse နှင့် curl ပေါင်းစပ်ခြင်း

M66 2025-05-13

နေ့စဉ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်ဝေးလံခေါင်သီသောဆာဗာများမှ XML အချက်အလက်များကိုရယူရန်နှင့်၎င်းကိုဆန်းစစ်ရန်လိုအပ်သည်။ ဤဆောင်းပါးသည် XML အချက်အလက်များကို download လုပ်ရန် Curl ကို မည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြပါလိမ့်မည်

1 ။ အဘိတ်: လိုအပ်သော extensions ကို enable

ပထမ ဦး စွာသင်၏ PHP ပတ်ဝန်းကျင်တွင်အောက်ပါ extensions များကိုဖွင့်ထားကြောင်းသေချာပါစေ။

  • ကောက်ကောက် : ဒေတာကိုအဝေးမှ download လုပ်လေ့ရှိတယ်

  • XML parser : XML စာရွက်စာတမ်းများကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသည်

ဤ extensions နှစ်ခုသည် PHP installation package အများစုကို default နှင့်ထပ်ဆောင်းတပ်ဆင်ရန်မလိုအပ်သောလိုအပ်ချက်များအတွက် default ဖြစ်သည်။

2 ။ XML ဒေတာများကိုရယူရန်ဆံပင်ကောက်ကောက်ကိုသုံးပါ

XML အကြောင်းအရာကို Curl မှတစ်ဆင့်ဝေးလံသောလိပ်စာတစ်ခုမှပထမဆုံး download လုပ်ကြည့်ရအောင်။

 function fetchXmlData($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $data = curl_exec($ch);

    if (curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
        return false;
    }

    curl_close($ch);
    return $data;
}

// နမူနာ URL
$url = 'https://api.m66.net/data/sample.xml';
$xmlContent = fetchXmlData($url);

if ($xmlContent === false) {
    exit('ရယူ XML ဆုံးရှုံး');
}

3 ။ XML_Parse ကို XML ဒေတာကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုပါ

PHP's XML_Parse function သည်ဖြစ်ရပ် - မောင်းနှင် XML parsing နည်းလမ်းဖြစ်သည်။ Parser ကိုဖန်တီးပြီးအပြောင်းအလဲနဲ့လုပ်ဆောင်မှုများကိုတည်ဆောက်ခြင်းဖြင့် XML အကြောင်းအရာများကိုစနစ်တကျခင်းကျင်းအဖြစ်ပြောင်းလဲနိုင်သည်။

 function parseXmlToArray($xml) {
    $parser = xml_parser_create();
    $values = [];
    $index = [];

    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

    if (!xml_parse_into_struct($parser, $xml, $values, $index)) {
        echo "XML အမှားခွဲခြမ်းစိတ်ဖြာခြင်း: " . xml_error_string(xml_get_error_code($parser));
        xml_parser_free($parser);
        return false;
    }

    xml_parser_free($parser);
    return buildXmlArray($values);
}

function buildXmlArray($values) {
    $result = [];
    $stack = [];

    foreach ($values as $val) {
        switch ($val['type']) {
            case 'open':
                $tag = $val['tag'];
                $child = [];
                if (isset($val['attributes'])) {
                    $child['@attributes'] = $val['attributes'];
                }
                $child['@children'] = [];
                $stack[] = [&$result];
                $result[$tag][] = &$child;
                $result = &$child['@children'];
                break;

            case 'complete':
                $tag = $val['tag'];
                $entry = isset($val['value']) ? $val['value'] : '';
                if (isset($val['attributes'])) {
                    $result[$tag][] = [
                        '@attributes' => $val['attributes'],
                        '@value' => $entry
                    ];
                } else {
                    $result[$tag][] = $entry;
                }
                break;

            case 'close':
                $result = &$stack[count($stack) - 1][0];
                array_pop($stack);
                break;
        }
    }

    return $result;
}

4 ။ ပြီးပြည့်စုံသောဥပမာ - download မှလွဲ. ခွဲခြမ်းစိတ်ဖြာရန်

အထက်ပါအပိုင်းနှစ်ပိုင်းကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် "Download + parsing" ဖြစ်စဉ်ကိုအကောင်အထည်ဖော်နိုင်သည်။

 $url = 'https://api.m66.net/data/sample.xml';
$xmlContent = fetchXmlData($url);

if ($xmlContent) {
    $parsedData = parseXmlToArray($xmlContent);
    echo "<pre>";
    print_r($parsedData);
    echo "</pre>";
}

5 ။ အကျဉ်းချုပ်

ဤဆောင်းပါးမှတစ်ဆင့် XML အချက်အလက်များကိုဒေါင်းလုပ်လုပ်ရန် PHP ၏ဆံပင်ကောက်ကောက်တိုးချဲ့မှုကိုမည်သို့အသုံးပြုရမည်နည်း, XML_Parse ကို အသုံးပြု. XML_PARSSE ကို အသုံးပြု. ၎င်းကိုစနစ်တကျခင်းကျင်းရန်မည်သို့အသုံးပြုရမည်နည်း။ XML_Parse သည်အဆင့်နိမ့်သောနည်းလမ်းဖြစ်သည်, ၎င်းသည်စွမ်းဆောင်ရည်မြင့်မားပြီးမှီခိုမှုအနည်းငယ်သာရှိသည်, စွမ်းဆောင်ရည်လိုအပ်ချက်များနှင့်အတူစီမံကိန်းများအတွက်သင့်လျော်သည်။

ပိုမိုရှုပ်ထွေးသော XML ကိုကိုင်တွယ်ရန်လိုအပ်ပါကအနာဂတ်တွင်ပိုမိုမြင့်မားသောပိုမိုမြင့်မားသော ခွဲခြမ်းစိတ်ဖြာခြင်း သို့မဟုတ် domdocument စသည့်ပိုမိုမြင့်မားသောခွဲခြမ်းစိတ်ဖြာသူများအားအသုံးပြုရန်ကြိုးစားရန်အကြံပြုပါသည်။