با عرض سلام خدمت کاربران محترم سایت پی وی لرن. در این جلسه قصد داریم تا نحوه کار با مفسر SimpleXML در PHP و خواندن xml از رشته و فایل را یاد بگیریم.
در جلسه قبل توضیحاتی در مورد xml ارائه دادیم که برای کسب اطلاعات بیشتر می توانید به آن مراجعه نمایید.
SimpleXML یک افزونه و تحلیل گر در php می باشد که این اجازه را به ما می دهد تا داده های xml را دریافت و پردازش کنیم.
SimpleXML یم پارسر از نوع درختی می باشد. (tree-based parser)
SimpleXML روشی آسان برای دریافت نام عناصر، ویژگی ها و محتوای متنی می باشد.
SimpleXML سند xml را به ساختار داده ای تبدیل می کند که می توانید توسط مجموعه ای از ارایه ها و اشیاء آن را بازنویسی کنید.
در مقایسه با پارسر های DOM و SimpleXML ، Expat حجم کد کمتری برای خواندن داده از یک عنصر را تولید می کند.
از php 5 به بعد، توابع SimpleXML جزئی از هسته php می باشد و نیازی به نصب آن ندارید.
تابع ()simplexml_load_string برای خواندن داده های xml از یک رشته استفاده می شود.
فرض کنید متغیری داریم که حاوی داده های xml می باشد. مانند پایین:
1 2 3 4 5 6 7 8 | $myXMLData = "<?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 را از یک رشته بخوانیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $myXMLData = "<?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=simplexml_load_string($myXMLData) or die("Error: Cannot create object"); print_r($xml); ?> |
خروجی کد بالا:
1 | SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! ) |
نکته: از توابع libxml برای بازیابی تمام خطا هایی که هنگام بارگذاری سند می تواند رخ دهد استفاده کنید.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php libxml_use_internal_errors(true); $myXMLData = "<?xml version='1.0' encoding='UTF-8'?> <document> <user>John Doe</wronguser> <email>john@example.com</wrongemail> </document>"; $xml = simplexml_load_string($myXMLData); if ($xml === false) { echo "Failed loading XML: "; foreach(libxml_get_errors() as $error) { echo "<br>", $error->message; } } else { print_r($xml); } ?> |
خروجی کد بالا:
1 2 3 | Failed loading XML: Opening and ending tag mismatch: user line 3 and wronguser Opening and ending tag mismatch: email line 4 and wrongemail |
تابع ()simplexml_load_file برای خواندن داده های xml از یک فایل استفاده می شود.
فرض کنید فایلی به نام “note.xml” مانند پایین داریم:
1 2 3 4 5 6 7 | <?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 از فایل استفاده کنیم:
1 2 3 4 | <?php $xml=simplexml_load_file("note.xml") or die("Error: Cannot create object"); print_r($xml); ?> |
خروجی کد بالا:
1 | SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! ) |
جلسه کار با SimpleXML در php نیز به پایان رسید.
در جلسه بعدی به نشان خواهیم داد تا چطور با استفاده از SimpleXML گره های یک فایل xml را بدست آوریم. با ما همراه باشید.