ویژگی تصویر

تجزیه کننده XML Expat در PHP

  /  XML   /  تجزیه کننده XML Expat در PHP
بنر تبلیغاتی الف
XML

در این بخش به بررسی تجزیه کننده XML Expat در PHP می پردازیم.

تجزیه کننده Expat از نوع رویدادی است و از آن برای پردازش XML در PHP استفاده می کنیم.

به XML زیر دقت کنید:

<from>Matin</from>

یک تجزیه کننده مبتنی بر رویداد، فایل XML بالا را به صورت سه رویداد گزارش می دهد:

  1. شروع عنصر: from
  2. شروع بخش اطلاعات با مقدار: Matin
  3. بستن عنصر: from

مثال XML بالا با یک فرمت درست نوشته شده است، اما به خاطر اینکه DTD ندارد، معتبر نیست.

نکته: DTD یا Document Type Definition مشخص کننده قوانین به کار رفته در یک سند می باشد، به این قوانین الگو می گویند، الگوها ابزارهای مهمی برای نگهداری پیوستگی اسناد محسوب می گردند. با مقایسه سند معینی با الگوی آن اعتبار آن سند تعیین می شود. اگر یک سند با تمام قوانین موجود در الگوی آن مطابقت داشته باشد به آن یک سند معتبر می گویند. معتبر بودن یک سند نشانه مطلوب بودن داده های آن است.

توابع XML Expat Parser بخشی از هسته PHP هستند. برای استفاده از این توابع نیازی به نصب نیست.

یک فایل 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

در این قسمت می خواهیم یک تجزیه کننده expat را در PHP مقداردهی اولیه کنیم، سپس برای هر رویدادی در فایل XML یک تابع تعریف کنیم که کار خاصی را انجام می دهد و در نهایت فایل XML را تجزیه کنیم.

تماشا در حالت تمام صفحه

توضیحات برای کد بالا:

  1. در خط 3 تجزیه کننده XML را با تابع xml_parser_create() پیکربندی می کنیم.
  2. در خط 6، 26 و 31 برای سه رویداد (شروع،اطلاعات،پایان) توابعی را تعریف کرده ایم.
  3. در خط 36 با تابع xml_set_element_handler() مشخص کرده ایم که هنگام باز و بسته شدن تگ ها (رویداد های: شروع و پایان) چه توابعی اجرا شوند.
  4. در خط 39 با استفاده از تابع xml_set_character_data_handler() مشخص کرده ایم که وقتی تجزیه کننده با کاراکتر های اطلاعات (بین تگ های باز و بسته: رویداد شروع و پایان) مواجه می شود چه تابعی اجرا شود.
  5. در خط 46 فایل note.xml را با تابع xml_parse() تجزیه می کنیم.
  6. در خط 48 تابع xml_error_string() را برای تبدیل خطا های XML به توضیحات متنی استفاده کرده ایم. (در صورت بروز خطا اجرا می شود)
  7. در خط 53 تابع xml_parser_free() حافظه (memory) اشغال شده توسط تابع xml_parser_create() را آزاد می کند.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج