PHP တွင် XML တွင် processing processing သည်အထူးသဖြင့်တတိယပါတီ၏ interfaces များသို့မဟုတ် configuration files များနှင့်အတူ docking လုပ်သည့်အခါတွင်ဘုံလိုအပ်ချက်တစ်ခုဖြစ်သည်။ XML_Parse () သည် PHP မှ XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန် PHP မှပေးသောအခြေခံလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော်သင် XML ကိုအသိုက်ဖွဲ့စည်းပုံများသို့မဟုတ်ရှုပ်ထွေးသောပုံစံများစွာဖြင့်ကိုင်တွယ်သောအခါသင်ဂရုမစိုက်ပါကခွဲခြမ်းစိတ်ဖြာခြင်းအမှားများကိုသင်ကြုံတွေ့ရနိုင်သည်။
ဤဆောင်းပါးသည် XML_Parse () အသိုက် XML ကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါတူညီသောခွဲခြမ်းစိတ်ဖြာမှုအမှားများကိုမည်သို့ရှောင်ရှားရမည်ကိုရှင်းပြပါမည်။
PHP ၏ XML parsing သည်များသောအားဖြင့်ဖြစ်ရပ် - မောင်းနှင်သောစနစ်ကိုအသုံးပြုလေ့ရှိပြီးအောက်ပါလုပ်ဆောင်ချက်များကိုအသုံးပြုသည်။
xml_parse ()
ဤတွင် XML parsing ဥပမာတစ်ခုဖြစ်သည်။
<?php
$xml = <<<XML
<books>
<book>
<title>PHP အစီအစဉ်</title>
<author>Zhang San</author>
</book>
<book>
<title>XML အမှန်တကယ်တိုက်ခိုက်ရေး</title>
<author>li si</author>
</book>
</books>
XML;
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
function startElement($parser, $name, $attrs) {
echo "Element ကိုစတင်ပါ: $name\n";
}
function endElement($parser, $name) {
echo "Ender: $name\n";
}
function characterData($parser, $data) {
if (trim($data)) {
echo "ဇာတ်ကောင်ဒေတာ: $data\n";
}
}
if (!xml_parse($parser, $xml, true)) {
die("XML အမှား: " . xml_error_string(xml_get_error_code($parser)) .
" အတွက် " . xml_get_current_line_number($parser) . " အိုကေ");
}
xml_parser_free($parser);
?>
အထူးသဖြင့်ဒြပ်စင်များအကြားလိုင်းချိုးဖောက်မှုများရှိပါက elements များကိုနက်နက်နဲနဲအသိုက်ထားသည့်အခါ စရိုက် လက်ခဏာကိုအကြိမ်ပေါင်းများစွာအစပျိုးနိုင်သည်။ အကြောင်းအရာကို cache variable များကို သုံး. စုဆောင်းသင့်သည်။ ထို့နောက် endelement () တွင်ပါဝင်သည်။
$depth = 0;
$currentTag = '';
$contentBuffer = [];
function startElement($parser, $name, $attrs) {
global $depth, $currentTag;
$depth++;
$currentTag = $name;
}
function endElement($parser, $name) {
global $depth, $currentTag, $contentBuffer;
if (isset($contentBuffer[$depth])) {
echo "ဓါတ် $name ၏တန်ဖိုး: " . trim($contentBuffer[$depth]) . "\n";
unset($contentBuffer[$depth]);
}
$depth--;
}
function characterData($parser, $data) {
global $depth, $contentBuffer;
if (!isset($contentBuffer[$depth])) {
$contentBuffer[$depth] = '';
}
$contentBuffer[$depth] .= $data;
}
အချို့သော XML တွင်ထိန်းချုပ်မှုဇာတ်ကောင် များ ,
$xml = preg_replace('/[^\x09\x0A\x0D\x20-\x7F]/u', '', $xml); // တရားမဝင်ဇာတ်ကောင်များကိုဖယ်ရှားပါ
$xml = str_replace('&', '&', $xml); // unecoded လွတ်မြောက်ရန် &
တရားဝင် XML အဖွဲ့အစည်းများမပျက်စီးနိုင်ကြောင်းသေချာစေရန်အကြိမ်ကြိမ်မလွတ်ခိုင်းရန်သတိထားပါ။
xml data သည် UTF-8 encoded နှင့် parser creation ဖြစ်သည့်အခါသတ်မှတ်ထားကြောင်းသေချာပါစေ။
$parser = xml_parser_create('UTF-8');
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
အသိုက် XML ဖွဲ့စည်းပုံသည်ရှုပ်ထွေးသောအခါနောက်ဆက်တွဲစနစ်တကျပြုပြင်ပြောင်းလဲမှုများကိုလွယ်ကူချောမွေ့စေရန်တံဆိပ်ကိုမှတ်တမ်းတင်ရန်တံဆိပ်ကိုမှတ်တမ်းတင်ရန် stack stack stack stack stack stack stack structure ကိုအသုံးပြုရန်အကြံပြုသည်။
$elementStack = [];
function startElement($parser, $name, $attrs) {
global $elementStack;
array_push($elementStack, $name);
}
function endElement($parser, $name) {
global $elementStack;
array_pop($elementStack);
}
stack မှတဆင့်, သင်သည်လက်ရှိလမ်းကြောင်းသို့မဟုတ်အဆင့်ဆင့်ကိုအချိန်မှန်အတွက်ရနိုင်ပြီး XML ဖွဲ့စည်းပုံကိုကိုယ်စားပြုရန် Multensional Array ကိုပင်တည်ဆောက်နိုင်သည်။
ပြင်ပ XML အရင်းအမြစ်များအတွက်တော့မအောင်မြင်မှုကြောင့်စာမျက်နှာပျက်နေခြင်းမှကာကွယ်ရန်ခြွင်းချက်များထည့်သွင်းရန်သေချာပါစေ။
LibxMl_use_internal_Eruor () Simplexml_load_string () ကို အသုံးပြု. လုပ်ငန်းစဉ်၏ပျက်ကွက်မှုအတွက်အခြားရွေးချယ်စရာဖြေရှင်းချက်တစ်ခုအဖြစ်အသုံးပြုပါ။
အကယ်. သင်သည် XML ကို https://api.m66.net/data.xml ကဲ့သို့သော interface တစ်ခုမှဖတ်ပါ။
$xmlContent = file_get_contents("https://api.m66.net/data.xml");
if ($xmlContent === false) {
die("တင်. မရပါ XML အချက်များ");
}
XML_Parse ()) ကို အသုံးပြုသောအခါ XML ကိုအသုံးပြုခြင်းကိုအသုံးပြုသောအခါ, ဘုံခွဲခြမ်းစိတ်ဖြာမှုအမှားများသည်မကိုက်ညီသောဇာတ်ကောင်များ, တရားမ 0 င်အက္ခရာများ, ကျိုးကြောင်းဆီလျော်သော coding သတ်မှတ်ချက်များ,
နောက်ခံခွဲခြမ်းစိတ်ဖြာမှုယုတ္တိဗေဒကိုကျွမ်းကျင်စေခြင်းကသင့်အား XML data structures များကိုပိုမိုထိရောက်သော XML ဒေတာတည်ဆောက်ပုံများကိုထိရောက်စွာလုပ်ဆောင်နိုင်ရန်ကူညီနိုင်သည်။
ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်ကိုထပ်မံရှင်းလင်းရန်လိုအပ်ပါက code ကိုပိုမိုကောင်းမွန်စွာပြန်လည်အသုံးပြုရန်နှင့်ထိန်းသိမ်းရန်အတွက် parser နှင့်ဒေတာစုဆောင်းခြင်းယုတ္တိဗေဒကိုစီမံရန်အတန်းတစ်ခုစီကို encapsulating ကိုသင်စဉ်းစားနိုင်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
xml_parse