يجعل مفسر الاوامر الامر سهلاً لقراءة ملفات XML ضمن صفحات PHP .
تستخدم لغة XML لوصف البيانات وتركز على نوع البيانات . يوصف ملف XML بنية البيانات . لايوجد وسوم معرفة مسبقاً في لغة XML بل يجب عليك إنشاء وسومك الخاصة . ان أردت دراسة المزيد حول XML يمكنك زيارة دورة XML في مكتبة المعهد .
يستخدم من أجل قراءة و تحديث و إنشاء ومعالجة ملف XML حيث ستحتاج الى مفسر XML .
يمكن تعريف المفسر كمفسر يعتمد على الاحداث . يركز هذا النوع من المفسر على محتوى صفحة XML لا على البنية وبسبب ذلك يمكن لهذا المفسر التحكم بالبيانات والمعلومات بسرعة اكبر من المفسر الشجري . لاحظ كود XML
يحتوي المثال السابق على بنية XML منتظمة و بالرغم من ذلك فإن هذا المثال ليس فعالاً لأنه لايحتوي على تعريف نوع الصفحة DTD ضمنها .
ملاحظة : يجب أن تكون صفحة XML منتظمة البنية وإلا سيقوم المفسر بتوليد خطأ .
تعتبر الأكواد الوظيفية في مفسر XML جزء من أكواد PHP و لذلك لاتحتاج إلى تنصيبات اضافية لاستخدام تلك الأكواد
مثال عن ملف XML والذي سيتم استخدامه لاحقاً :
ان اردت البدء بإنشاء مفسر XML يمكن تعريف بعض أحداث XML المختلفة ثم يمكن إنشاء مفسر لملف XML .
مثال
ستظهر النتيجة كالتالي :
ماهي لغة XML ؟
تستخدم لغة XML لوصف البيانات وتركز على نوع البيانات . يوصف ملف XML بنية البيانات . لايوجد وسوم معرفة مسبقاً في لغة XML بل يجب عليك إنشاء وسومك الخاصة . ان أردت دراسة المزيد حول XML يمكنك زيارة دورة XML في مكتبة المعهد .
ماهو المفسر ؟
يستخدم من أجل قراءة و تحديث و إنشاء ومعالجة ملف XML حيث ستحتاج الى مفسر XML .
يوجد نوعان أساسيان من مفسر XML :
- المفسر الشجري: يقوم هذا المفسر بتحويل ملف XML الى بنية شجرية حيث تقوم بتحليل الصفحة كاملة كما تقدم صلاحيات لجميع عناصر الصفحة كما في لغة (DOM) .
- المفسر الحدثي : يقوم هذا المفسر بعرض صفحة XML كسلسلة من الأحداث و عند حدوث حدث معين سيتم استدعاء كود وظيفي للتعامل معه .
يمكن تعريف المفسر كمفسر يعتمد على الاحداث . يركز هذا النوع من المفسر على محتوى صفحة XML لا على البنية وبسبب ذلك يمكن لهذا المفسر التحكم بالبيانات والمعلومات بسرعة اكبر من المفسر الشجري . لاحظ كود XML
<from>Jani</from>
يقدم المفسر الحدثي مثال XML السابق كسلسلة من ثلاثة أحداث :
- بداية العنصر : from
- بداية CDATA و القيمة Jani .
- نهاية العنصر : from
يحتوي المثال السابق على بنية XML منتظمة و بالرغم من ذلك فإن هذا المثال ليس فعالاً لأنه لايحتوي على تعريف نوع الصفحة DTD ضمنها .
ملاحظة : يجب أن تكون صفحة XML منتظمة البنية وإلا سيقوم المفسر بتوليد خطأ .
التنصيب
تعتبر الأكواد الوظيفية في مفسر XML جزء من أكواد PHP و لذلك لاتحتاج إلى تنصيبات اضافية لاستخدام تلك الأكواد
ملف XML
مثال عن ملف XML والذي سيتم استخدامه لاحقاً :
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
البدء بتفعيل مفسر XML
ان اردت البدء بإنشاء مفسر XML يمكن تعريف بعض أحداث 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("test.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);
?>
ستظهر النتيجة كالتالي :
-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
كيف يعمل الكود ؟
- إنشاء مفسر 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() .
ليست هناك تعليقات:
إرسال تعليق