PHP တွင် XML ကိုင်တွယ်ရန်သာမန်နည်းလမ်းများအနက်တစ်ခုမှာ XML_Parse_into_stroto_struct () function ကိုသုံးရန်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည် XML စာရွက်စာတမ်းများကိုစနစ်တကျဖွဲ့စည်းထားသောခင်းကျင်းမှုတစ်ခုအဖြစ်ခွဲခြမ်းစိတ်ဖြာနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုမှတစ်ဆင့် attribute အချက်အလက်များမှ XML tag များကိုခွဲခြားရန်နှင့်ထုတ်ယူရမည်ကိုရှင်းပြပြီး၎င်းကိုဥပမာဖြင့်သရုပ်ဖော်ပါလိမ့်မည်။
int xml_parse_into_struct(
XMLParser $parser,
string $data,
array &$values,
array &$index = null
);
$ Parser : XML parser အရင်းအမြစ်။
$ ဒေတာ - ခွဲခြမ်းစိတ်ဖြာရန် XML ဒေတာ။
$ တန်ဖိုးများ - output ကို၏စနစ်တကျခင်းကျင်း။
$ အညွှန်းကိန်း : တံဆိပ်များ indexing များအတွက် optional ကိုခင်းကျင်း။
XML_Parse_into_struct () ၏သော့သည် tags များ, စာသား node များ, CDATA နှင့်အခြားသတင်းအချက်အလက်များကိုအမိန့်တွင်ထည့်သွင်းထားသည့် tags များ , စာသား node များ, Array ရှိ item တစ်ခုချင်းစီသည် actireTive array တစ်ခုဖြစ်ပြီးအဓိကနယ်ပယ်များတွင် -
Tag : Tag Name ။
Type : node အမျိုးအစား (ပွင့် လင်း ။ အနီးကပ် , ပြည့်စုံ , CDATA စသည်) ။
Value : tag မှပါ 0 င်သောစာသားတန်ဖိုး (ဆိုလျှင်) ။
Attributes - tag ရဲ့ attribute ဟာ actiretive array အဖြစ်တည်ရှိတယ် (attribute တစ်ခုရှိရင်) ။
အောက်ပါ XML ရှိတယ်ဆိုပါစို့။
<books>
<book id="1" category="fiction">
<title>Book One</title>
</book>
<book id="2" category="non-fiction">
<title>Book Two</title>
</book>
</books>
parsing အတွက်အောက်ပါ PHP ကုဒ်ကိုသုံးနိုင်သည်။
<?php
$xml = <<<XML
<books>
<book id="1" category="fiction">
<title>Book One</title>
</book>
<book id="2" category="non-fiction">
<title>Book Two</title>
</book>
</books>
XML;
$parser = xml_parser_create();
xml_parse_into_struct($parser, $xml, $values, $index);
xml_parser_free($parser);
echo "<pre>";
print_r($values);
echo "
";
?>
ခွဲခြမ်းစိတ်ဖြာပြီးနောက် $ တန်ဖိုးများ ၏အကြောင်းအရာသည်အကြမ်းအားဖြင့်အောက်ပါအတိုင်းဖြစ်သည် -
Array
(
[0] => Array
(
[tag] => BOOKS
[type] => open
)
[1] => Array
(
[tag] => BOOK
[type] => open
[attributes] => Array
(
[ID] => 1
[CATEGORY] => fiction
)
)
[2] => Array
(
[tag] => TITLE
[type] => complete
[value] => Book One
)
[3] => Array
(
[tag] => BOOK
[type] => close
)
[4] => Array
(
[tag] => BOOK
[type] => open
[attributes] => Array
(
[ID] => 2
[CATEGORY] => non-fiction
)
)
[5] => Array
(
[tag] => TITLE
[type] => complete
[value] => Book Two
)
[6] => Array
(
[tag] => BOOK
[type] => close
)
[7] => Array
(
[tag] => BOOKS
[type] => close
)
)
Book -tag တစ်ခုချင်းစီတွင် ပွင့်လင်း ။ အနီးကပ် အမျိုးအစားများရှိသည်။
attribute အချက်အလက်များကို attributes key တွင်ပါ 0 င်ပြီး Associative Array ပုံစံတွင်ရှိသည်။
စာသားတန်ဖိုးများ (ဥပမာစာအုပ်ခေါင်းစဉ်) သည် တန်ဖိုး key တွင်တည်ရှိပြီး tag type သည်ပြီး ပြည့်စုံ သည်။
tag အမည်များကိုအမြဲတမ်းစာလုံးများအမြဲရှိသည်။ XML_Parse_into_sto_struct ၏ပုံမှန်အပြုအမူဖြစ်သည်။
$ တန်ဖိုးများကို ခင်းကျင်းကျော်ကြားမှုဖြင့် attribute များဖြင့် attribute များဖြင့် attribute များဖြင့်ထုတ်ယူနိုင်သည်။ ဥပမာအားဖြင့်:
foreach ($values as $entry) {
if (isset($entry['attributes'])) {
echo "Tag: {$entry['tag']}\n";
foreach ($entry['attributes'] as $attrName => $attrValue) {
echo " $attrName => $attrValue\n";
}
}
}
Tag အမည်များနှင့် attribute အမည်များကိုအလိုအလျောက်ပြောင်းလဲသွားသည်။
ဤလုပ်ဆောင်ချက်သည် tags များ၏အဆင့်ဆင့်ဖွဲ့စည်းပုံသတင်းအချက်အလက်ကိုမသိမ်းဆည်းထားပါ, သို့သော်သာဖြစ်စဉ်များတွင်သာစီစဉ်ထားသည်။
ရိုးရှင်းသော XML အတွက်သင့်တော်သည်, ပိုမိုရှုပ်ထွေးသောဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာပြုပြင်ခြင်းလိုအပ်ပါက dom သို့မဟုတ် simplexml ကိုအကြံပြုပါသည်။