လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> xml_parse function ကို အသုံးပြု. XML ဖိုင်များကို XML ဖိုင်များဖြင့်ထုတ်ယူခြင်းနှင့် parse attribute တန်ဖိုးများကိုထုတ်ယူနည်း။

xml_parse function ကို အသုံးပြု. XML ဖိုင်များကို XML ဖိုင်များဖြင့်ထုတ်ယူခြင်းနှင့် parse attribute တန်ဖိုးများကိုထုတ်ယူနည်း။

M66 2025-04-24

XML ဒေတာများကိုပြုပြင်သည့်အခါ PHP သည် PHP ၏ XML Parser (Expat အပေါ် အခြေခံ. ) XML_Parse () function သည် XML_Parse () function ဖြစ်သည်။ ဤဆောင်းပါးသည် XML ဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် Extract attribute တန်ဖိုးများနှင့်စာသားအကြောင်းအရာများကိုထုတ်ယူရန်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ XML အချက်အလက်များကိုပြင်ဆင်ပါ

ကျွန်ုပ်တို့တွင်အောက်ပါ XML ဖိုင်ကို sample.xml အမည်ရှိ XML ဖိုင်ရှိသည်ဆိုပါစို့။

 <?xml version="1.0" encoding="UTF-8"?>
<articles>
    <article id="101" author="Alice">
        <title>PHP XMLခွဲခြမ်းစိတ်ဖြာသင်ခန်းစာ</title>
        <url>https://m66.net/articles/php-xml</url>
    </article>
    <article id="102" author="Bob">
        <title>နက်ရှိုင်းသောနားလည်မှုDOMDocument</title>
        <url>https://m66.net/articles/domdocument</url>
    </article>
</articles>

ကျွန်ုပ်တို့၏ရည်မှန်းချက်မှာ ID , Aspr. Attribute များနှင့်ဆောင်းပါးတစ်ခုစီအတွက်ခေါင်းစဉ်နှင့်လင့်များကိုခွဲခြမ်းစိတ်ဖြာရန်ဖြစ်သည်။

2 ။ XML ကိုဆုံရန် XML_Parse ကိုသုံးပါ

XML_Parse () သည်အဆင့်နိမ့် XML parsing function ဖြစ်သည်။ ၎င်းကိုအသုံးပြုသောအခါ xml_set_element_Handler () နှင့် xml_set_character_data_handler ()

နမူနာကုဒ်:

 <?php

$xml = file_get_contents('sample.xml');

$parser = xml_parser_create("UTF-8");

// လက်ရှိ element name ကိုသိမ်းထားပါ
$currentTag = '';
// ဆောင်းပါးအချက်အလက်များကိုသိမ်းဆည်းပါ
$articles = [];
$currentArticle = [];

xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

function startElement($parser, $name, $attrs) {
    global $currentTag, $currentArticle, $articles;

    $currentTag = strtolower($name);

    if ($currentTag === 'article') {
        // ဆောင်းပါးအသစ်ကိုအစပြုပါ
        $currentArticle = [
            'id' => $attrs['ID'] ?? '',
            'author' => $attrs['AUTHOR'] ?? '',
            'title' => '',
            'url' => ''
        ];
    }
}

function endElement($parser, $name) {
    global $currentTag, $currentArticle, $articles;

    if (strtolower($name) === 'article') {
        $articles[] = $currentArticle;
    }

    $currentTag = '';
}

function characterData($parser, $data) {
    global $currentTag, $currentArticle;

    $data = trim($data);
    if (!$data) return;

    if ($currentTag === 'title') {
        $currentArticle['title'] .= $data;
    } elseif ($currentTag === 'url') {
        $currentArticle['url'] .= $data;
    }
}

// ခွဲခြမ်းစိတ်ဖြာစတင်ပါ
if (!xml_parse($parser, $xml, true)) {
    die("XML Error: " . xml_error_string(xml_get_error_code($parser)));
}

xml_parser_free($parser);

// output ကိုခွဲခြမ်းစိတ်ဖြာရလဒ်များ
foreach ($articles as $article) {
    echo "ဆောင်းပါး ID: " . $article['id'] . PHP_EOL;
    echo "စာရေးသူ: " . $article['author'] . PHP_EOL;
    echo "ဘဲှ့: " . $article['title'] . PHP_EOL;
    echo "သံကွင်းဆက်: " . $article['url'] . PHP_EOL;
    echo str_repeat('-', 40) . PHP_EOL;
}

?>

3 ။ ခွဲခြမ်းစိတ်ဖြာခြင်းရလဒ်များ

အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, output ကိုဖြစ်လိမ့်မည်:

 ဆောင်းပါး ID: 101
စာရေးသူ: Alice
ဘဲှ့: PHP XMLခွဲခြမ်းစိတ်ဖြာသင်ခန်းစာ
သံကွင်းဆက်: https://m66.net/articles/php-xml
----------------------------------------
ဆောင်းပါး ID: 102
စာရေးသူ: Bob
ဘဲှ့: နက်ရှိုင်းသောနားလည်မှုDOMDocument
သံကွင်းဆက်: https://m66.net/articles/domdocument
----------------------------------------

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

XML_Parse () သည် ကြီးမားသောဖိုင်များသို့မဟုတ်အချိန်နှင့်အမျှအချိန်နှင့်အမျှခွဲခြမ်းစိတ်ဖြာလုပ်ငန်းများကိုကိုင်တွယ်ရန်အလွန်သင့်လျော်သော XML data streams များကိုပြုလုပ်သော XML data streams များကိုပြုပြင်ရန်စီစဉ်ထားသည်။ ၎င်းသည် dom သို့မဟုတ် simplexml ကဲ့သို့အလိုလိုသိမှုနှင့်မတူသော်လည်း၎င်းသည်အလွန်ခွဲခြမ်းစိတ်ဖြာနိုင်ပြီးမှတ်ဉာဏ်အထိခိုက်မခံသော application များအတွက်သင့်တော်သည်။

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် XML ဖိုင်ဖွဲ့စည်းပုံသည်ရှုပ်ထွေးပြီးပြောင်းလွယ်ပြင်လွယ်ရှိရန်လိုအပ်ပါက domdocument သို့မဟုတ် scemalml ကို အသုံးပြု. စဉ်းစားနိုင်သည်။ သို့သော်သင်သည်ခွဲခြမ်းစိတ်ဖြာမှုလုပ်ငန်းစဉ်ကိုဂရုတစိုက်ထိန်းချုပ်ရန်သို့မဟုတ်အလွန်အမင်းစွမ်းဆောင်ရည်လိုအပ်ချက်များရှိပါက XML_Parse () သည်ထည့်သွင်းစဉ်းစားရကျိုးနပ်သောကိရိယာတစ်ခုဖြစ်သည်မှာသေချာသည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    xml_parse