آموزش کار با مفسر Expat در PHP


آموزش کار با مفسر 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);  ?>                  

توضیح کد مثال فوق :

  1. با استفاده از تابع XML_Parser_Create()، مفسر برنامه را مقداردهی اولیه کرده و راه اندازی نموده ایم.
  2. در مرحله بعدی توابع مختلف را برای کار با مدیریت کننده های رویدادها یا event handlers تعیین نموده ایم.
  3. با استفاده از تابع xml_set_element_handler() تعیین کرده ایم کدام تابع در زمانی که مفسر XML وارد تگ های ابتدایی و انتهایی سند می شود، اجرا شوند.
  4. با استفاده از تابع xml_set_character_data_handler() تعیین کرده ایم کدام تابع در زمانی که مفسر XML وارد کاراکترهای داده ای می شود، اجرا شود.
  5. با استفاده از تابع XML_Parse() فایل “note.xml” را خوانده و پردازش کرده ایم.
  6. در موارد رخ دادن خطاها (errors)، تابع XML_error_string() را اضافه کرده ایم تا خطای XML روی داده را به خطایی قابل خواندن و متنی تبدیل کند.
  7. در پایان مثال هم، تابع XML_Parser-free() را برای رهاسازی حافظه ای که تابع XML_Parser_create() اشغال کرده است را فراخوانی کرده ایم.

مثال های عملی بیشتر مفسر XML Expat Parser :

برای دریافت اطلاعات بیشتر درباره تابع های مفسر Expat Parser به بخش مرجع آموزش مفسر Expat Parser در سایت تحلیل داده بروید.

دیدگاهتان را بنویسید