လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML_PERSE ဥပမာ xml_set_element_Handler ဖြင့်အသုံးပြုသည်

XML_PERSE ဥပမာ xml_set_element_Handler ဖြင့်အသုံးပြုသည်

M66 2025-05-13

Web Development ကိုလုပ်ဆောင်နေသည့်အခါကျွန်ုပ်တို့သည် XML အချက်အလက်များကိုတတိယပါတီ၏ APIs များမှရရှိသောအချက်အလက်များဆိုင်ရာအချက်အလက်များသို့မဟုတ်အချို့သော configuration files များကိုခွဲခြမ်းစိတ်ဖြာခြင်းကဲ့သို့သော XML အချက်အလက်များကိုမကြာခဏလုပ်ဆောင်ရန်လိုအပ်သည်။ PHP တွင် XML_PARSE နှင့် XML_SESSEST_ELECTE_HANDLER သည် XML အချက်အလက်များကိုလုပ်ဆောင်ရန်အတွက်စီစဉ်ထားသောနည်းလမ်းတစ်ခုဖြစ်သည်။

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

1 ။ အခြေခံအယူအဆများမိတ်ဆက်

Simplexml , Domdocument , XMLreader စသည်တို့ကို PHP တွင် XML တွင် XML တွင်လုပ်ဆောင်ရန်နည်းလမ်းများစွာရှိသည် ဤ parsing နည်းလမ်းသည် Volume XML ကိုကိုင်တွယ်ရန်အလွန်ကောင်းမွန်သည်။

Core function ကို:

  • XML_Parser_Create () - XML ​​parser ကိုဖန်တီးပါ။

  • XML_SET_ELEMEMETER_HANDLER () - အစနှင့်အဆုံး tags များကိုကိုင်တွယ်သော callback function ကိုသတ်မှတ်သည်။

  • XML_Parse () - xml ကိုခွဲပါ။

  • xml_parser_Free () : parser အရင်းအမြစ်များကိုလွှတ်ပေးပါ။

2 ။ လက်တွေ့ကျကျကိစ္စ - ဆောင်းပါးအချက်အလက်များကိုလေ့လာခြင်း

အကြောင်းအရာပလက်ဖောင်းတစ်ခုမှ XML ဒေတာတစ်ခုရှိကြောင်းယူဆကြပါစို့။

 <?xml version="1.0"?>
<articles>
    <article>
        <title>PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်</title>
        <author>li lei</author>
        <url>https://m66.net/articles/php-xml-guide</url>
    </article>
    <article>
        <title>နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler</title>
        <author>han meimei</author>
        <url>https://m66.net/articles/xml-handler-deepdive</url>
    </article>
</articles>

ရည်မှန်းချက် - ဆောင်းပါးအားလုံး၏ခေါင်းစဉ်များနှင့်ချိတ်ဆက်မှုများနှင့်ချိတ်ဆက်မှုများကိုဖြည်ချပြီးသူတို့ကိုခင်းကျင်းစွာသိမ်းထားသည်။

3 ။ ကုဒ်အကောင်အထည်ဖော်မှု

 <?php

$xmlData = <<<XML
<?xml version="1.0"?>
<articles>
    <article>
        <title>PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်</title>
        <author>li lei</author>
        <url>https://m66.net/articles/php-xml-guide</url>
    </article>
    <article>
        <title>နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler</title>
        <author>han meimei</author>
        <url>https://m66.net/articles/xml-handler-deepdive</url>
    </article>
</articles>
XML;

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

$articles = [];
$currentTag = "";
$currentArticle = [];

// Start Tag ပရိုဆက်ဆာကိုသတ်မှတ်ပါ
function startElement($parser, $name, $attrs) {
    global $currentTag;
    $currentTag = strtolower($name);
}

// အဆုံး tag processor ကိုသတ်မှတ်ပါ
function endElement($parser, $name) {
    global $currentTag, $currentArticle, $articles;
    
    if (strtolower($name) == 'article') {
        $articles[] = $currentArticle;
        $currentArticle = [];
    }
    $currentTag = "";
}

// ဇာတ်ကောင်ဒေတာပရိုဆက်ဆာကိုသတ်မှတ်ပါ
function characterData($parser, $data) {
    global $currentTag, $currentArticle;

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

    if (in_array($currentTag, ['title', 'author', 'url'])) {
        $currentArticle[$currentTag] = $data;
    }
}

// အပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်များကိုတက် setting
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

// ခွဲခြမ်းစိတ်ဖြာစတင်ပါ
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_parser_free($parser);

// output ကိုခွဲခြမ်းစိတ်ဖြာရလဒ်များ
echo "<pre>";
print_r($articles);
echo "</pre>";
?>

4 ။ output ရလဒ်

 Array
(
    [0] => Array
        (
            [title] => PHP XMLခွဲခြမ်းစိတ်ဖြာခြင်းလမ်းညွှန်
            [author] => li lei
            [url] => https://m66.net/articles/php-xml-guide
        )

    [1] => Array
        (
            [title] => နက်ရှိုင်းသောနားလည်မှု xml_set_element_handler
            [author] => han meimei
            [url] => https://m66.net/articles/xml-handler-deepdive
        )
)

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

ဤကိစ္စမှတဆင့် XML_Parse နှင့် XML_set_element_Handler သည် ကျွန်ုပ်တို့အားလိုအပ်သော tag နှင့် text content များကိုလုပ်ဆောင်ရန်ခွင့်ပြုနိုင်သည်ကိုကျွန်ုပ်တို့တွေ့နိုင်သည်။ ဤနည်းလမ်းသည် Simplexml ထက်အနည်းငယ်ရှုပ်ထွေးသော်လည်း XML ဖိုင်သည်အလွန်ကြီးမားသည်သို့မဟုတ်ကွန်ယက်စီးဆင်းမှုမှလာသည်။

အောက်ပါအခြေအနေများမှသက်ဆိုင်:

  • ကြီးမားသော XML ဖိုင်များကိုမှတ်ဉာဏ် - အထိခိုက်မခံသောအပြောင်းအလဲများ,

  • Real Network Streams တွင် XML data parse xml ဒေတာ;

  • XML tags များကိုအကာအကွယ်ဒဏ်ငွေထိန်းချုပ်ရန်လိုအပ်သည့်အခြေအနေများလိုအပ်သည်။

အကယ်. သင်သည်ရှုပ်ထွေးသော XML အဆောက်အအုံများကိုကိုင်တွယ်ရန်လိုအပ်သည့်စနစ်တစ်ခုကိုတည်ဆောက်ရန်လိုအပ်ပါကသင်ထင်သည်ထက်ပိုမိုထိရောက်သောနှင့်ထိန်းချုပ်နိုင်သောဤ SAX parsing method ကိုစမ်းကြည့်ရန်အကြံပြုသည်။