PHP – پارسر XML DOM
پارسر داخلی DOM امکان پردازش اسناد XML را در PHP فراهم میکند.
پارسر XML DOM
پارسر DOM یک پارسر مبتنی بر درخت (tree-based parser) است.
به بخش زیر از یک سند XML توجه کنید:
<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>
پارسر DOM XML بالا را به عنوان یک ساختار درختی میبیند:
- سطح 1: سند XML
- سطح 2: عنصر ریشه:
<from>
- سطح 3: عنصر متنی: “Jani”
نصب
توابع پارسر DOM بخشی از هسته PHP هستند و نیازی به نصب جداگانه ندارند.
فایل XML
فایل XML زیر (“note.xml”) در مثال ما استفاده خواهد شد:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
بارگذاری و خروجی XML
ما میخواهیم پارسر XML را راهاندازی کنیم، XML را بارگذاری کنیم و آن را خروجی بگیریم:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
خروجی کد بالا به صورت زیر خواهد بود:
Tove Jani Reminder Don't forget me this weekend!
اگر در پنجره مرورگر “View source” را انتخاب کنید، خواهید دید:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
مثال بالا یک شیء DOMDocument
ایجاد میکند و XML را از “note.xml” به آن بارگذاری میکند.
سپس تابع saveXML()
سند XML داخلی را به یک رشته تبدیل میکند تا بتوانیم آن را خروجی بگیریم.
حلقهزدن در XML
ما میخواهیم پارسر XML را راهاندازی کنیم، XML را بارگذاری کنیم و از طریق تمام عناصر عنصر <note>
حلقه بزنیم:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes as $item) {
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>
خروجی کد بالا به صورت زیر خواهد بود:
#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =
در مثال بالا میبینید که بین هر عنصر، گرههای متنی خالی وجود دارد.
هنگام تولید XML، اغلب فضای خالی بین گرهها وجود دارد. پارسر XML DOM این فضاهای خالی را به عنوان عناصر عادی در نظر میگیرد و اگر از آنها آگاه نباشید، گاهی اوقات باعث مشکلاتی میشوند.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام