مفسر XML در PHP مفسری بر اساس رویداد (event-based) است. این افزونه از کتابخانه Expat برای پیاده سازی مفسر رویدادی استفاده می کند. همانند دیگر مفسر های XML هسته PHP , این مفسر هم از پلاگین libxml
استفاده می کنید . همچنین XML parser از اینکد کاراکتری ISO-8859-1, US-ASCII و UTF-8 پشتیبانی می کند.
متوجه یک مورد اذیت کننده شدید؟ بله, نام این پلاگین خودش “مفسر XML” است. این نام بسیار عمومی و گیج کننده است. برای اینکه مطمین شوید که چه چیزی را می خوانید, بهتر است قبل از شروع معرفی مفسرهای PHP را به منظور دریافت یک سری اطلاعات پایه مطالعه کنید.
این مفسر از مفسرهای درختی XML دیگر (SimpleXML و DOM) سریعتر است. چراکه کل داکیومنت XML را برای تجزیه در داخل مموری لود نمی کند. با استفاده از این پلاگین, نمی توانید پرونده های XML را اعتبارسنجی کنید. اگر فرمت نامعتبری را پاس بدید, در اینصورت به خطا بر می خورید.
توابع مفسر XML در PHP
پلاگین مفسر XML در PHP شامل چندین تابع برای دسترسی به المان های XML است. بعضی از این توابع بصورت زیر است:
xml_parser_create() , xml_parser_create_ns()
– برای ساخت هندلر مفسر XML- تابع
xml_parser_create_ns()
قابلیت ساخت هندلر مفسر با پشتیبانی از فضای نام (namespace) را داراست. xml_parse()
– تجزیه فایل XML وxml_parse_into_struct()
– برای تبدیل گره (node) های XML به آرایه استفاده می شود.xml_set_element_handler()
– برای ست کردن آغاز و پایان هندلر المان برای مفسر XML استفاده می شود.xml_get_current_line_number(), xml_get_current_column_number()
– برای دریافت شماره ستون فعلی و شماره ستون خط فعلی استفاده می شود.xml_parser_free()
– برای پایان دادن به هندلر مفسر
تجزیه XML با شروع و پایان هندلر المنت
در این مثال, ما توابع onStart()
و onEnd()
را به عنوان هندلر های رویداد المنت تعریف می کنیم. در هنگام تفسیر XML با xml_parse() این هندلرها ساختار گره XML را با شماره خط ها توسط تابع print در PHP نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?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>'; $line_number = 0; function onStart($parser,$name,$attributes) { global $line_number; if($line_number != xml_get_current_line_number($parser)) { $line_number = xml_get_current_line_number($parser) . ": "; $output = "<br/>" . $line_number . " \t<" . $name . ">"; } else $output = "<" . $name . ">"; echo $output; } function onEnd($parser,$name) { global $line_number; if($line_number != xml_get_current_line_number($parser)) { $line_number = xml_get_current_line_number($parser) . ": "; $output = "<br/>".$line_number . " \t</" . $name . ">"; } else $output = "</" . $name . ">"; echo $output; } $parser = xml_parser_create(); xml_set_element_handler($parser, 'onStart', 'onEnd'); if (!xml_parse($parser, $xmlDocument, true)) { echo "<br/>Parse Error"; } else { echo "<br/>Parsing is done."; } ?> |
خروجی کد php بالا بصورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 |
2: <TOYS> 3: <TOY> 4: <NAME></NAME> 5: <TYPE></TYPE> 6: </TOY> 7: <TOY> 8: <NAME></NAME> 9: <TYPE></TYPE> 10: </TOY> 11: </TOYS> Parsing is done. |
امیدوارم از آموزش مفسر XML در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید