يتيح محلل Expat المدمج إمكانية معالجة مستندات XML في PHP.
يتم استخدام لغة XML لوصف البيانات، مع التركيز على ماهية البيانات. تصف ملفات XML بنية البيانات.
في XML، لا توجد علامات محددة مسبقًا. يجب عليك تحديد العلامات الخاصة بك.
لمعرفة المزيد حول XML، قم بزيارة البرنامج التعليمي XML الخاص بنا.
لقراءة وتحديث - إنشاء ومعالجة - مستند XML، تحتاج إلى محلل XML.
هناك نوعان أساسيان من موزعي XML:
المحلل اللغوي القائم على الشجرة: يقوم هذا المحلل بتحويل مستندات XML إلى بنية شجرة. فهو يحلل المستند بأكمله ويوفر الوصول إلى العناصر الموجودة في الشجرة، مثل نموذج كائن المستند (DOM).
المحلل اللغوي المستند إلى الحدث: يتعامل مع مستند XML كسلسلة من الأحداث. عند وقوع حدث معين، يستدعي المحلل اللغوي دالة للتعامل معه.
المحلل اللغوي Expat هو محلل يعتمد على الحدث.
يركز المحللون المعتمدون على الأحداث على محتوى مستندات XML بدلاً من بنيتها. ولهذا السبب، يستطيع الموزعون المعتمدون على الأحداث الوصول إلى البيانات بشكل أسرع من الموزعين المعتمدين على الشجرة.
يرجى الاطلاع على جزء XML التالي:
<من>جاني</من>
يقوم المحلل اللغوي المستند إلى الحدث بإبلاغ XML أعلاه كسلسلة من ثلاثة أحداث:
عنصر البداية: من
ابدأ قسم CDATA، القيمة: Jani
العنصر المغلق: من
يحتوي مثال XML أعلاه على XML جيد التصميم. ومع ذلك، هذا المثيل هو XML غير صالح لأنه لا يوجد تعريف لنوع المستند (DTD) مقترن به.
ومع ذلك، هذا لا يحدث فرقًا عند استخدام المحلل اللغوي Expat. Expat هو محلل لا يتحقق من الصلاحية ويتجاهل أي DTD.
باعتباره محلل XML قائمًا على الأحداث وغير معتمد، فإن Expat سريع وخفيف الوزن، مما يجعله مثاليًا لتطبيقات الويب PHP.
ملحوظة: يجب أن يكون مستند XML مُشكلًا بشكل جيد وإلا فسيقوم Expat بإنشاء خطأ.
تعد وظيفة محلل XML Expat جزءًا لا يتجزأ من PHP الأساسية. لا يلزم التثبيت لاستخدام هذه الوظائف.
سيتم استخدام ملف XML التالي في مثالنا:
<?xml version="1.0" encoding="ISO-8859-1"?><note><to>توفي</to><من>جاني</from><heading>تذكير</heading><body>دون 'لا تنساني في نهاية هذا الأسبوع!</body></note>
نحتاج إلى تهيئة محلل XML في PHP، وتحديد المعالجات لأحداث XML المختلفة، ثم تحليل ملف XML.
<?php// تهيئة محلل XML$parser=xml_parser_create();// الوظيفة المستخدمة في بداية العنصرfunction start($parser,$element_name,$element_attrs) { Switch($element_name) { case "NOTE": echo "-- ملاحظة--<br>"; حالة الاستراحة "TO": حالة الاستراحة "من": حالة الاستراحة; "HEADING": echo "Heading: "; case "BODY": echo "Message: "; } }// الدالة المستخدمة في نهاية العنصر function stop($parser,$element_name) { echo "<br> "; }// الوظيفة المستخدمة عند البحث عن بيانات الأحرف function char($parser,$data) { echo $data; }// تحديد العنصر Handlerxml_set_element_handler($parser,"start",stop");// حدد معالج البياناتxml_set_character_data_handler($parser,"char");// افتح ملف XML$fp=fopen("test.xml"،"r");/ / قراءة البيانات ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) أو die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); / حرر محلل XMLxml_parser_free($parser);?>سيتم إخراج الكود أعلاه:
-- ملاحظة -- إلى: توفي من: جاني العنوان: رسالة تذكير: لا تنساني في نهاية هذا الأسبوع!
كيف يعمل:
قم بتهيئة محلل XML من خلال الدالة xml_parser_create()
إنشاء وظائف تعمل مع معالجات الأحداث المختلفة
أضف وظيفة xml_set_element_handler() لتحديد الوظيفة التي سيتم تنفيذها عندما يواجه المحلل اللغوي علامتي الفتح والإغلاق
أضف وظيفة xml_set_character_data_handler() لتحديد الوظيفة التي سيتم تنفيذها عندما يواجه المحلل اللغوي بيانات الأحرف
تحليل الملف "test.xml" من خلال الدالة xml_parse()
في حالة وجود أخطاء، أضف وظيفة xml_error_string() لتحويل أخطاء XML إلى أوصاف نصية
قم باستدعاء الدالة xml_parser_free() لتحرير الذاكرة المخصصة للوظيفة xml_parser_create()
لمعرفة المزيد حول وظيفة PHP Expat، تفضل بزيارة الدليل المرجعي لمحلل PHP XML.