در آموزش قبلی, به شما انواع مفسرهای XML در PHP را معرفی کردیم و در این مقاله قصد آموزش مفسر SimpleXML در PHP را داریم.
مفسر زبان XML با نام SimpleXML یک افزونه زبان PHP است که به ما امکان ویرایش و خواندن اطلاعات فایل های XML را می دهد.
مفسر زبان XML نوع SimpleXML، یک راه ساده برای دریافت مقدار نام (name)، خواص (attribute) و محتوی متنی هر عنصر (element) در یک سند XML را به شرط دانستن ساختار یا قالب آن فایل، فراهم می کند.
مفسر SimpleXML یک سند XML را به ساختار داده ای ویژه ای تبدیل کرده که می توانید با آن همانند یک مجموعه از آرایه ها و اشیاء رفتار کنید.
در مقایسه با روش DOM یا مفسر Excapt Parser، مفسر SimpleXML، برای خواندن یک عنصر (element) در فایل های XML، به حجم کدنویسی کمتری نیاز دارد.
ویژگی های مفسر SimpleXML
- نیاز به پلاگین
libxml
دارد - یک ابزار ساده و آسان برای تجزیه XML است
- به PHP 5 به بالا نیاز دارد
- مفسر درختی (tree-based) است
- قابلیت تجزیه فایل های XML که با فرمت DOM تفسیر شده اند را دارد.
جدا از تمام موارد بالا, مفسر SimpleXML در PHP قابلیت کار با هر دو استایل رویه ای (procedural) و شی گرایی (object-oriented) برای parse کردن داکیومنت های XML را دارد.
توابع SimpleXML
Simplexml_load_file()
- سینتکس:
1simplexml_load_file(($fileName,$class,$options,$ns,$is_prefix) - این تابع مسیر فایل XML را به عنوان پارامتر اول دریافت می کند.
- به طور پیشفرض XML را به آبجکت
SimpleXMLElement
تبدیل می کند.درغیر اینصورت, می توانیم از کلاس سفارشی (پارامتر $class) کهSimpleXMLElement
را ارث بری کرده است استفاده کنیم. - می توانیم پارامتر های اضافی libxml را توسط $options ست کنیم
$ns
برای مشخص کردن پیشوند(prefix) فضای نام (namespace) است. اگر ست شود پس مقدار$is_prefix
راTRUE
قرار می دهیم.
Simple_load_string()
- سینتکس:
1simplexml_load_string($XMLData,$class,$options,$ns,$is_prefix)
تنها تفاوت این تابع از مورد بالا به جای دریافت فایل, داده رشته ای را دریافت می کند. بقیه پارامتر ها مشابه simplexml_load_file() است.
Simple_import_dom()
- سینتکس:
1simplexml_load_string($DOMNode,$class)
این تابع محتوای XML با فرمت DOM را به عنوان آرگومان دریافت و به طور پیش فرض آن را به آبجکت SimpleXMLElement
تبدیل می کند.
کلاس های SimpleXML
پلاگین مفسر SimpleXML شامل کلاس های زیر است,
- SimpleXMLElement
- SimpleXMLIterator
هر دو کلاس های بالا شامل ویژگی هایی برای دسترسی به گره (node
) های XML در حین parse کردن است.برای مثال, می توانیم
- فرزند گره های ریشه مشخص را دریافت کنیم
- یک فرزند (child) جدید اضافه کنیم
- نام المنت مشخصی را دریافت کنیم
- المنت فعلی/بعدی را حین parse کردن دریافت کنیم
SimpleXMLIterator
کلاس SimpleXMLElement
را برای پیاده سازی یک RecursiveIterator
برای انجام عملیات بازگشتی parse کردن روی گره های XML به ارث (inherit) می برد.
مثال مفسر SimpleXML در PHP
حالا, زمان آزمایش توابع SimpleXML
بالا برای تجزیه و خواندن فایل XML است.
در ابتدا, نیاز است که یک فایل XML بسازیم. (ساخت و ذخیره XML توسط PHP)
1 2 3 4 5 6 7 8 9 10 11 |
<?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> |
می توانیم به طور مستفیم آن را توسط simplexml_load_string() لود کنیم. همچنین می توانیم به عنوان فایل toys.xml ذخیره و به تابع simplexml_load_file() پاس بدیم.
1 2 3 4 5 6 |
<?php $xml = simplexml_load_file("../toys.xml"); print "<PRE>"; print_r($xml); print "</PRE>"; ?> |
به عنوان نتیحه, آبجکت SimpleXMLElement بصورت زیر بازگشت (return
) داده خواهد شد.
1 2 3 4 5 6 7 8 9 10 11 12 |
SimpleXMLElement Object( [toy] => Array( [0] => SimpleXMLElement Object( [name] => Ben 10 Watch [type] => Battery Toys ) [1] => SimpleXMLElement Object( [name] => Angry Birds Gun [type] => Mechanical Toys ) ) ) |
افزودن المنت فرزند با استفاده از مفسر SimpleXML
برای افزودن یک فزرند به یک گره (node) در فایل XML , می توانیم از متد addChild()
در کلاس SimpleXMLElement بهره ببریم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php $xmlDocument = '<?xml version="1.0"?> <toys xmlns:h="http://www.w3.org/TR/html4/"> <toy> <name>Ben 10 Watch</name> <type>Battery Toys</type> </toy> <toy> <name>Angry Birds Gun</name> <type>Mechanical Toys</type> </toy> </toys>'; $xml = new SimpleXMLElement($xmlDocument); $toy = $xml->addChild('toy'); $toy->addChild('name', 'Remote Control Car'); $toy->addChild('type', 'Remote Control Toys'); print "<PRE>"; print_r($xml); print "</PRE>"; ?> |
امیدوارم از آموزش مفسر SimpleXML در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید