آموزش کار با مفسر 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 در سایت تحلیل داده بروید.

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

نشانی ایمیل شما منتشر نخواهد شد.