#C کلید ورود به بازار کار

دوره پروژه‌محور #C و ASP.NET Core

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

مقاله قبلی
آموزش خواندن مقدار گره (node) با PHP SimpleXML
مقاله بعدی
آموزش کار با مفسر XML DOM در PHP
نظرات شما

نظرات خود را ثبت کنید...