XML ဒေတာများကိုပြုပြင်သည့်အခါ PHP သည် PHP ၏ XML Parser (Expat အပေါ် အခြေခံ. ) XML_Parse () function သည် XML_Parse () function ဖြစ်သည်။ ဤဆောင်းပါးသည် XML ဖိုင်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် Extract attribute တန်ဖိုးများနှင့်စာသားအကြောင်းအရာများကိုထုတ်ယူရန်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
ကျွန်ုပ်တို့တွင်အောက်ပါ 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 များနှင့်ဆောင်းပါးတစ်ခုစီအတွက်ခေါင်းစဉ်နှင့်လင့်များကိုခွဲခြမ်းစိတ်ဖြာရန်ဖြစ်သည်။
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;
}
?>
အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, output ကိုဖြစ်လိမ့်မည်:
ဆောင်းပါး ID: 101
စာရေးသူ: Alice
ဘဲှ့: PHP XMLခွဲခြမ်းစိတ်ဖြာသင်ခန်းစာ
သံကွင်းဆက်: https://m66.net/articles/php-xml
----------------------------------------
ဆောင်းပါး ID: 102
စာရေးသူ: Bob
ဘဲှ့: နက်ရှိုင်းသောနားလည်မှုDOMDocument
သံကွင်းဆက်: https://m66.net/articles/domdocument
----------------------------------------
XML_Parse () သည် ကြီးမားသောဖိုင်များသို့မဟုတ်အချိန်နှင့်အမျှအချိန်နှင့်အမျှခွဲခြမ်းစိတ်ဖြာလုပ်ငန်းများကိုကိုင်တွယ်ရန်အလွန်သင့်လျော်သော XML data streams များကိုပြုလုပ်သော XML data streams များကိုပြုပြင်ရန်စီစဉ်ထားသည်။ ၎င်းသည် dom သို့မဟုတ် simplexml ကဲ့သို့အလိုလိုသိမှုနှင့်မတူသော်လည်း၎င်းသည်အလွန်ခွဲခြမ်းစိတ်ဖြာနိုင်ပြီးမှတ်ဉာဏ်အထိခိုက်မခံသော application များအတွက်သင့်တော်သည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် XML ဖိုင်ဖွဲ့စည်းပုံသည်ရှုပ်ထွေးပြီးပြောင်းလွယ်ပြင်လွယ်ရှိရန်လိုအပ်ပါက domdocument သို့မဟုတ် scemalml ကို အသုံးပြု. စဉ်းစားနိုင်သည်။ သို့သော်သင်သည်ခွဲခြမ်းစိတ်ဖြာမှုလုပ်ငန်းစဉ်ကိုဂရုတစိုက်ထိန်းချုပ်ရန်သို့မဟုတ်အလွန်အမင်းစွမ်းဆောင်ရည်လိုအပ်ချက်များရှိပါက XML_Parse () သည်ထည့်သွင်းစဉ်းစားရကျိုးနပ်သောကိရိယာတစ်ခုဖြစ်သည်မှာသေချာသည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
xml_parse