Header Ads

مفسر الاوامر XML

يجعل مفسر الاوامر الامر سهلاً لقراءة ملفات XML ضمن صفحات PHP .




ماهي لغة 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!


كيف يعمل الكود ؟



  1.  إنشاء مفسر XML من خلال الكود xml_parser_create() .

  2.  إنشاء وظائف لاستخدامها مع معالجات أحداث مختلفة .

  3.  اضافة xml_set_element_handler() لتحديد أي الوظائف التي ستظهر عندما يقوم المفسر بمواجهة بدايات ونهايات الوسوم .

  4.  اضافة xml_set_character_data_handler() لتحديد أي الوظائف التي ستظهر عندما يقوم المفسر بمواجهة البيانات .

  5.  تفسير الملف التجريبي "test.xml" من خلال الوظيفة xml_parse() .

  6.  في حال حدوث خطأ يمكن اضافة xml_error_string() لتحويل خطأ XML الى وصف نصي مشروح .

  7.  يمكن استخدام xml_parser_free() لتحرير الذاكرة المحددة مع الوظيفة xml_parser_create() .






ليست هناك تعليقات:

يتم التشغيل بواسطة Blogger.