آموزش کار با مفسر XML DOM در PHP :
مفسر درون ساخته XML DOM، امکان پردازش و خواندن فایل های XML را در PHP فراهم می کند.
مفسر XML DOM یک مفسر درختی یا tree-basded parser است.
به قطعه کد XML زیر دقت کنید :
<?xml version="1.0" encoding="UTF-8" ?> <from>Jani</from>
مفسر XML DOM، کد XML فوق را به صورت یک ساختار درختی 3 سطحی می بیند :
- سطح 1 یا Level1 : سند فایل XML.
- سطح 2 یا Level2 : المنت اصلی یا Root element که المنت <form> است.
- سطح 3 یا Level3 : المنت متنی یا Text element که دارای مقدار “Jani” می باشد.
آموزش نصب مفسر XML DOM در PHP :
تابع های مفسر XML 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 در PHP :
در این بخش قصد داریم تا مفسر XML DOM را مقداردهی اولیه کرده، فایل XML را خوانده و اطلاعات آن را در خروجی نشان دهیم. برای این منظور کد زیر را می نویسیم :
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml"); print $xmlDoc->saveXML(); ?>
خروجی کد مثال فوق به صورت زیر است :
Tove Jani Reminder Don't forget me this weekend!
اگر در مرورگر سورس کد صفحه را بگیرید (گزینه “View Source”)، کد HTML زیر را مشاهده می کنید :
<?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>
مثال عملی فوق، یک شی DOM (Document object Model) را ایجاد کرده و فایل “note.xml” را می خواند و درون آن قرار می دهد. سپس تابع saveXML()، محتویات XML استخراج شده را در یک متغیر متنی string قرار داده که می توان آن را در خروجی چاپ نمود.
حرکت درون فایل XML با استفاده از حلقه Loop :
در کد مثال عملی زیر، مفسر XML DOM را مقداردهی اولیه کرده و فایل XML را خوانده ایم. سپس با استفاده از یک حلقه loop به درون عناصر المنت
<?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 با این عناصر همانند عنصرهای معمولی برخورد کرده و اگر از وجود آن ها اطلاع نداشته باشید، ممکن است برخی مواقع برنامه را دچار مشکل کنند.