دروس PHP XML: الإنشاء والتحليل والقراءة باستخدام المثال
⚡ ملخص ذكي
تتكامل لغة PHP ولغة XML معًا لهيكلة البيانات وتخزينها وتبادلها بين الأنظمة. يشرح هذا الدليل لغة XML، ونموذج كائن المستند (DOM)، ومحللات XML، ثم يوضح كيفية قراءة مستند XML باستخدام SimpleXML وكيفية إنشائه باستخدام فئة DOMDocument، ويختتم بتوضيح متى يُستخدم كل منهما.

ما هو XML؟
XML هو اختصار للغة التوصيف القابلة للتوسيع.
تُستخدم لغة XML لهيكلة البيانات وتخزينها ونقلها من نظام إلى آخر.
لغة XML تشبه لغة HTML، فهي تستخدم وسوم الفتح والإغلاق. على عكس HTML، تسمح XML للمستخدمين بتحديد وسومهم الخاصة.
ما هو DOM؟
DOM هو اختصار لنموذج كائن المستند.
هو معيار متعدد المنصات ومحايد لغوياً يحدد كيفية الوصول إلى البيانات ومعالجتها في:
- HTML
- XHTML
- XML
يتم استخدام DOM XML للوصول إلى مستندات XML ومعالجتها. هو - هي عرض مستند XML كهيكل شجري.
موزعي XML
محلل XML هو برنامج يقوم بترجمة مستند XML إلى كائن نموذج كائن مستند XML (DOM).
يمكن بعد ذلك معالجة كائن XML DOM باستخدام Javaنص, Python، PHP، ولغات أخرى.
تُستخدم الكلمة المفتاحية CDATA، وهي اختصار لـ (unparsed) Character Data، لتجاهل الأحرف الخاصة مثل "<" و ">" عند تحليل مستند XML.
لماذا نستخدم XML؟
- تستخدم خدمات الويب مثل SOAP وREST تنسيق XML لتبادل المعلومات. إن معرفة ماهية XML وكيفية عملها يمنحك ميزة تنافسية كمطور، نظرًا لأن التطبيقات الحديثة تعتمد بشكل كبير على خدمات الويب.
- يمكن استخدام مستندات XML لتخزين إعدادات تكوين التطبيق.
- يتيح لك إنشاء علاماتك المخصصة، مما يجعله أكثر مرونة.
مثال على وثيقة XML
لنفترض أنك تقوم بتطويرping تطبيق يحصل على البيانات من خدمة ويب بتنسيق XML.
فيما يلي نموذج لما يبدو عليه مستند XML.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
هنا،
- " "يحدد إصدار XML والترميز المراد استخدامه
- " " هو العنصر الجذري.
- " ... "هي العناصر الفرعية، عنصر واحد لكل سجل موظف."
كيفية قراءة XML باستخدام PHP
لنكتب الآن الكود الذي سيقرأ مستند XML الخاص بالموظفين ويعرض النتائج في متصفح الويب. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
هنا،
- "$xml = simplexml_load_file('employees.xml');" يستخدم الدالة simplexml_load_file لتحميل الملف المسمى employees.xml وتعيين محتوياته للمتغير $xml.
- "$list = $xml->record;" يحصل على محتويات عقد السجل.
- "for ($i = 0; $i < count(…)…" هي حلقة التكرار التي تقرأ المصفوفة وتُخرج النتائج
- "$list[$i]->attributes()->man_no;" يقرأ السمة man_no للعنصر
- "$list[$i]->name;" يقرأ قيمة العنصر التابع للاسم
- "$list[$i]->الموضع؛" يقرأ قيمة العنصر التابع للموضع
اختبار قارئ XML
بافتراض أنك قمت بحفظ الملف index.php في مجلد phptuts/xml، انتقل إلى URL http://localhost/phptuts/xml/index.php
كيفية إنشاء مستند XML باستخدام PHP
سننظر الآن في كيفية إنشاء مستند XML باستخدام PHP.
يستخدم الكود التالي فئة DOMDocument المضمنة في PHP لإنشاء مستند XML.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
هنا،
- "$dom = new DOMDocument();" يقوم بإنشاء نسخة من فئة DOMDocument.
- "$dom->encoding = 'utf-8';" يضبط ترميز المستند على utf-8
- "$dom->xmlVersion = '1.0';" يحدد رقم الإصدار 1.0
- "$dom->formatOutput = true;" يضمن أن الإخراج منسق بشكل جيد
- "$root = $dom->createElement('Movies');" يقوم بإنشاء العقدة الجذرية المسماة Movies
- يُعرّف السطر "$attr_movie_id = new DOMAttr('movie_id', '5467');" سمة movie_id لعقدة الفيلم
- يُنشئ الأمر "$dom->createElement('ElementName', 'ElementValue')" عنصرًا فرعيًا. يُحدد ElementName اسم العنصر، مثل "العنوان". بينما يُحدد ElementValue قيمة العنصر الفرعي، مثل "الحملة".
- "$root->appendChild($movie_node);" يُلحق عقدة الفيلم بالعقدة الجذرية Movies
- "$dom->appendChild($root);" يقوم بإلحاق العقدة الجذرية بمستند XML.
- "$dom->حفظ($xml_file_name);" يحفظ ملف XML في الدليل الجذر لخادم الويب.
- "echo "$xml_file_name has been successfully created";" يعرض رسالة نجاح.
اختبار XML Creator
بافتراض أنك قمت بحفظ الملف create_movies_list.php في مجلد phptuts/xml، انتقل إلى URL http://localhost/phptuts/xml/create_movies_list.php
افتح ملف movies_list.xml.
SimpleXML مقابل DOMDocument
توفر لغة PHP طريقتين رئيسيتين للتعامل مع XML. تُعدّ SimpleXML الأنسب عند الحاجة إلى قراءة البيانات بشكل أساسي، بينما توفر DOMDocument تحكمًا أدقّ في إنشاء المستندات وتعديلها بشكل مكثف. يقارن الجدول أدناه بينهما.
| البعد | SimpleXML | مستند DOM |
|---|---|---|
| سهولة الاستخدام | الأمر بسيط للغاية؛ يتصرف المستند مثل الكائنات المتداخلة | واجهة برمجة تطبيقات أكثر تفصيلاً وقائمة على العقد |
| أفضل ل | القراءة والتحرير الخفيف | إنشاء المستندات والتعامل المعقد معها |
| أسلوب الوصول | $xml->record->name | إنشاء عنصر() وإلحاق طفل() |
| دعم XPath | نعم، عبر ->xpath() | نعم، عبر فئة DOMXPath |
تتمثل القاعدة العملية في استخدام SimpleXML أولاً لقراءة الخلاصات والملفات البسيطة، والتحويل إلى DOMDocument عندما تحتاج إلى إنشاء مستندات أو إدراج عقد في مواضع محددة أو التحقق من صحتها مقابل مخطط.



