Dom یک مفسر درختی است که از یک API برای دستکاری فایل XML در PHP استفاده می کند. در نسخه پایین تر از PHP 5 , ما باید ماژول domxml
را برای استفاده از مفسر DOM اضافه می کردیم.
از نسخه PHP 5 , پلاگین libxml
جزئی از هسته PHP است, و ما نیازی به نصب و یا فعال کردن چیزی برای استفاده از مفسر DOM در php استفاده کنیم.
قابلیت های مفسر DOM
مفسر DOM در PHP امکانات زیادی دارد . این API شامل کلاس هایی به همراه لیستی از متد ها , property ها و متدهای سازنده (construct) است که امکاناتی را برای کار با فایل XML در اختیاز ما قرار می دهد.
- DOM API شامل گره (node) هایی بر اساس داده ها دارد . برای مثال, کلاس های
DOMCharacterData
, DOMComment
برای نشان دادن کاراکتر داده گره ها و کامنت های آن استفاده می شوند.
- کلاس
DOMDocument
کل ریشه فایل XML را نشان می دهد. که شامل لیست عظیمی از توابع است که معمولا برای گره هایی مانند زیر مناسب است - بارگذاری فایل یا پرونده XML توسط مفسر XML
- ساخت یک گره جدید , گره داده کاراکتر , گره PI
- افزودن یک خاصیت (attribute) به یک گره (node)
- دسترسی به گره های XML با ID, Name, Namespace
- ذخیره پرونده XML داخل یک فایل یا متغییر
- اعتبارسنجی پرونده XML
- رابط کاربری برای ردیابی (trace) استثناها در اختیار ما می دهد.
- DOM API , Xpath را ارزیابی می کند
- مفسر DOM در PHP از اینکودینگ UTF8 پشتیبانی می کند.
تابع dom_import_simplexml()
تعامل بین مفسر SimpleXML با استفاده از تابع dom_import_simplexml()
قابل انجام است. که آبجکت SimpleXML
را به عنوان آرگومان نیاز دارد و در فرمت DOM به عنوان نتیجه برگشت می دهد.
مثال تجزیه XML با مفسر DOM
در ابتدا, باید این فایل را برای کار با آبجکت DOM فراخوانی کنیم. با استفاده از این آبجکت, می توانیم با تکرار حلقه هر یک از گره های XML , مقدار name و value هر جفت را دربیاریم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $xmlDocument = '<?xml version="1.0"?> <toys> <toy> <name>Ben 10 Watch</name> <type>Battery Toys</type> </toy> <toy> <name>Angry Birds Gun</name> <type>Mechanical Toys</type> </toy> </toys>' ?> |
کد PHP زیر یک المنت جدید را به فایل XML مورد نظر با استفاده از توابع DOM اضافه (append) می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php $dom = new DOMDocument(); $dom->loadXML($xmlDocument); $target = $dom->getElementsByTagName("toys")->item(0); $new_node = $dom->createElement("toy"); $child1 = $dom->createElement("name","Remote Car"); $child2 = $dom->createElement("type","Remote Toys"); $new_node->appendChild($child1); $new_node->appendChild($child2); $target->appendChild($new_node); $elements = $dom->documentElement; if (!is_null($elements)) { foreach ($elements->childNodes AS $element) { echo "<br/><". $element->nodeName. ">"; $nodes = $element->childNodes; if (!is_null($nodes)) { foreach ($nodes as $node) { echo $node->nodeName . ":" . $node->nodeValue. "<br/>"; }}}} ?> |
خروجی :
نتیجه نهایی مثال بالا با مفسر DOM در PHP بصورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<#text> #text: name:Ben 10 Watch #text: type:Battery Toys #text: <#text> #text: name:Angry Birds Gun #text: type:Mechanical Toys #text: <#text> name:Remote Car type:Remote Toys |
امیدوارم از آموزش مفسر Dom در php نهایت استفاده را برده باشید .
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید