افزونه XML Reader در PHP برای ساخت مفسر XML برای پیامیش بین یک داکیومنت XML استفاده می شود. این از آخرین مورد لیست مفسر های XML در هسته PHP که قبلا خواندیم, است. این مفسر اشاره دارد به مفسر XML بر پایه استریم و آن را pull parser هم می نامیم.
قبل از ورژن ۵٫۱٫۰ php , اکستنشن XML Reader جزئی از افزونه PECL
بود. بنابراین, نیاز بود که PECL
را نصب و XML Reader را به منظور استفاده از توابع آن فعال کنیم. بعدها, این مورد به هسته PHP اضافه و بطور پیش فرض فعال شد.
ویژگی های XML Reader
افزونه XML Reader در PHP شامل قابلیت های بسیاری است که بعضی از آنها بصورت زیر است,
- دریافت قسمتی از داکیومنت XML بر اساس node فعلی
- دریافت خصوصیات (
attributes
) بر اساسindex
, نام یا فضای نام (namespace
) - تجزیه (parse) المان ها بر اساس خصوصیات ایندکس , نام یا فضای نام (
namespace
) - تجزیه (parse) المان ها در عمق فعلی بدون طی کردن مراحل رفتن به لایه های داخلی
- دریافت مقدار گره (node) فعلی
- ست کردن ویژگی ها / گزینه های اضافی به مفسر XML
- اعتبارسنجی داکیومنت XML
مزایای XML Reader
XML Reader گزینه خوبی برای تجزیه (parse) فایل XML است, اگر قصد استفاده از تجزیه بر پایه استریم را دارید . چراکه,
- بسیار سریع است بدلیل اینکه کل XML را در حافظه موقت فراخوانی نمی کند
- قابلیت تفسیر فایل های XML بزرگ و پیچیده که دارای چندین شاخه هستند.
مثال افزونه XML Reader در PHP
در این مثال, ما فایل XML داده شده را برای هندلر مفسر که توسط کلاس XMLReader
ساخته شده است را فراخوانی می کنیم.
این مفسر, المنت های XML را با تکرار در یک حلقه می خواند. در هر تکرار, مفسر بررسی می کند اگر گره (node) فعلی <toy> باشد. اگر اینطور بود, خصوصیت ID و XML داخلی گره فعلی را چاپ می کند.
در پایان تکرار حلقه, next()
برای پرش به گره <toy> بعدی با رد کردن گره <toy> فعلی, استفاده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $xmlDocument = '<?xml version="1.0"?> <toys> <toy code="10001"> <name>Ben 10 Watch</name> <type>Battery Toys</type> </toy> <toy code="10002"> <name>Angry Birds Gun</name> <type>Mechanical Toys</type> </toy> </toys>'; $xml = new XMLReader(); $xml->XML($xmlDocument); while( $xml->read() ) { if($xml->name == "toy") { print "ID:" . $xml->getAttribute("code") . "<br/>"; print $xml->readInnerXML() . "<br/>"; $xml->next(); } } ?> |
نتیجه کد php بالا بصورت زیر خواهد بود.
1 2 3 4 5 6 |
ID:10001 <name>Ben 10 Watch</name> <type>Battery Toys</type> ID:10002 <name>Angry Birds Gun</name> <type>Mechanical Toys</type> |
امیدوارم از آموزش افزونه XML Reader در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید