دروس PHP XML: الإنشاء والتحليل والقراءة باستخدام المثال
ما هو 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
لنفترض أنك تقوم بتطوير تطبيق يحصل على البيانات من خدمة ويب بتنسيق 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.
- "قائمة $ = $xml->سجل؛" يحصل على محتويات عقدة السجل.
- "for ($i = 0; $i < count(...)..." هي حلقة for التي تقرأ المصفوفة الرقمية وتخرج النتائج
- "$list[$i]->attributes()->man_no;" يقرأ السمة man_no للعنصر
- "$list[$i]->name;" يقرأ قيمة العنصر التابع للاسم
- "$list[$i]->الموضع؛" يقرأ قيمة العنصر التابع للموضع
اختبار تطبيقنا
بافتراض أنك قمت بحفظ ملف Index.php في مجلد phptus/xml، انتقل إلى عنوان URL http://localhost/phptuts/xml/index.php
كيفية إنشاء مستند XML باستخدام PHP
سننظر الآن في كيفية إنشاء مستند XML باستخدام PHP.
سوف نستخدم المثال أعلاه في مخطط شجرة DOM.
يستخدم الكود التالي PHP المضمن في فئة DOMDocument لإنشاء مستند 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', 'The Campaign'); $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 = 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');" يحدد سمة معرف الفيلم لعقدة الأفلام
- "$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')" ينشئ العقدة الفرعية لعقدة الأفلام. يحدد ElementName اسم العنصر، على سبيل المثال العنوان. يقوم ElementValue بتعيين قيمة العقدة الفرعية، على سبيل المثال الحملة.
- "$root->appendChild($movie_node);" يقوم بإلحاق عناصر movie_node بأفلام العقدة الجذرية
- "$dom->appendChild($root);" يقوم بإلحاق العقدة الجذرية بمستند XML.
- "$dom->حفظ($xml_file_name);" يحفظ ملف XML في الدليل الجذر لخادم الويب.
- ""صدى" " . $xml_file_name . ' تم إنشاؤه بنجاح';" يقوم بإنشاء الرابط إلى ملف XML.
اختبار تطبيقنا
بافتراض أنك قمت بحفظ الملف create_movies_list في مجلد phptuts/xml، انتقل إلى عنوان URL http://localhost/phptuts/xml/create_movies_list.php
انقر على رابط movie_list_xml
الملخص
- XML هي اختصار للغة التوصيف القابلة للتوسيع
- يمكن استخدام XML لتبادل المعلومات بين الأنظمة أو تخزين إعدادات التكوين الخاصة بالتطبيق وما إلى ذلك.
- DOM هو اختصار لـ Document Object Model. يعرض XML DOM مستند XML كبنية شجرة
- محلل XML هو برنامج يقوم بترجمة XML لمستند XML إلى مستند يشبه بنية شجرة DOM.
- يتم استخدام CDATA لتجاهل الأحرف الخاصة عند تحليل مستندات XML.
- PHP يستخدم simplexml_load_file لقراءة مستندات XML وإرجاع النتائج كمصفوفة رقمية
- فئة PHP DOMDocument لإنشاء ملفات XML.