آموزش کار با مفسر Expat XML در PHP :
مفسر درون ساخته XML Expat Parser، امکان خواندن و پردازش اطلاعات فایل های XML را در زبان PHP فراهم می کند.
همانطور که قبلا اشاره کردیم، XML Expat یک مفسر مبتنی بر رویداد یا event-based Parser است.
به قطعه کد XML زیر دقت کنید :
<from>Jani</from>
یک مفسر مبتنی بر رویداد، قطعه کد XML فوق را به صورت یک مجموعه سه تایی از رویدادهای متوالی، گزارش می کند. به صورت زیر :
- المنت آغازین یا Start element که “form” است.
- شروع کننده بخش CDATA که دارای مقدار “Jani” می باشد.
- المنت پایان دهنده Close element که باز هم “form” است.
مفسر زبان XML نوع Expat یکی از توابع درون ساخته زبان PHP بوده و برای استفاده از آن نیاز به نصب افزونه با برنامه خاصی ندارید.
بررسی فایل XML مثال ها :
از فایل XML به نام “note.xml” با محتویات زیر در مثال های این درس استفاده شده است :
<?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 Expat Parser در PHP :
در کد زیر، ما مفسر XML Expat Parser را مقداردهی اولیه کرده و تعدادی مدیریت کننده رویداد (handler) را برای چندین رویداد XML تعیین کرده ایم. در نهایت هم فایل XML را خوانده و پردازش کرده ایم :
<?php // Initialize the XML parser $parser=xml_parser_create(); // Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } // Function to use at the end of an element function stop($parser,$element_name) { echo "<br>"; } // Function to use when finding character data function char($parser,$data) { echo $data; } // Specify element handler xml_set_element_handler($parser,"start","stop"); // Specify data handler xml_set_character_data_handler($parser,"char"); // Open XML file $fp=fopen("note.xml","r"); // Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } // Free the XML parser xml_parser_free($parser); ?>
توضیح کد مثال فوق :
- با استفاده از تابع XML_Parser_Create()، مفسر برنامه را مقداردهی اولیه کرده و راه اندازی نموده ایم.
- در مرحله بعدی توابع مختلف را برای کار با مدیریت کننده های رویدادها یا event handlers تعیین نموده ایم.
- با استفاده از تابع xml_set_element_handler() تعیین کرده ایم کدام تابع در زمانی که مفسر XML وارد تگ های ابتدایی و انتهایی سند می شود، اجرا شوند.
- با استفاده از تابع xml_set_character_data_handler() تعیین کرده ایم کدام تابع در زمانی که مفسر XML وارد کاراکترهای داده ای می شود، اجرا شود.
- با استفاده از تابع XML_Parse() فایل “note.xml” را خوانده و پردازش کرده ایم.
- در موارد رخ دادن خطاها (errors)، تابع XML_error_string() را اضافه کرده ایم تا خطای XML روی داده را به خطایی قابل خواندن و متنی تبدیل کند.
- در پایان مثال هم، تابع XML_Parser-free() را برای رهاسازی حافظه ای که تابع XML_Parser_create() اشغال کرده است را فراخوانی کرده ایم.
مثال های عملی بیشتر مفسر XML Expat Parser :
برای دریافت اطلاعات بیشتر درباره تابع های مفسر Expat Parser به بخش مرجع آموزش مفسر Expat Parser در سایت تحلیل داده بروید.