دروس PHP XML: الإنشاء والتحليل والقراءة باستخدام المثال

⚡ ملخص ذكي

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

  • 📄 ما هو XML؟ لغة XML هي لغة ترميز قابلة للتوسيع، وهي تنسيق قائم على العلامات يسمح لك بتحديد علامات مخصصة لهيكلة البيانات ونقلها.
  • 🌳 الدوم: ينظر نموذج كائن المستند إلى مستند XML أو HTML على أنه شجرة، بحيث يمكن للتعليمات البرمجية التنقل بين العقد وتحريرها.
  • 🔄 محللات XML: يقوم المحلل اللغوي بتحويل مستند XML إلى كائن DOM الذي يستخدمه PHP، Javaنص، أو Python يستطيع القراءة والتغيير.
  • ؟؟؟؟ قراءة ملفات XML: تقوم الدالة simplexml_load_file بتحميل ملف إلى كائنات، لذا يمكنك الوصول إلى السجلات باستخدام صيغة السهم مثل $xml->record->name.
  • 🛠️ إنشاء ملف XML: تقوم فئة DOMDocument بإنشاء مستند عقدة تلو الأخرى باستخدام createElement و appendChild، ثم تقوم save بكتابة الملف.
  • 🇧🇷 SimpleXML مقابل DOM: SimpleXML سريع للقراءة، بينما يناسب DOMDocument الإنشاء الدقيق والمعالجة المعقدة.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن لأدوات الذكاء الاصطناعي إنشاء رمز تحليل لبنية XML محددة والتحويل بين XML و JSON ومصفوفات PHP.

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

لنفترض أنك تقوم بتطوير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

سننظر الآن في كيفية إنشاء مستند 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

قم بإنشاء مستند XML باستخدام PHP

افتح ملف movies_list.xml.

قم بإنشاء مستند XML باستخدام PHP

SimpleXML مقابل DOMDocument

توفر لغة PHP طريقتين رئيسيتين للتعامل مع XML. تُعدّ SimpleXML الأنسب عند الحاجة إلى قراءة البيانات بشكل أساسي، بينما توفر DOMDocument تحكمًا أدقّ في إنشاء المستندات وتعديلها بشكل مكثف. يقارن الجدول أدناه بينهما.

البعد SimpleXML مستند DOM
سهولة الاستخدام الأمر بسيط للغاية؛ يتصرف المستند مثل الكائنات المتداخلة واجهة برمجة تطبيقات أكثر تفصيلاً وقائمة على العقد
أفضل ل القراءة والتحرير الخفيف إنشاء المستندات والتعامل المعقد معها
أسلوب الوصول $xml->record->name إنشاء عنصر() وإلحاق طفل()
دعم XPath نعم، عبر ->xpath() نعم، عبر فئة DOMXPath

تتمثل القاعدة العملية في استخدام SimpleXML أولاً لقراءة الخلاصات والملفات البسيطة، والتحويل إلى DOMDocument عندما تحتاج إلى إنشاء مستندات أو إدراج عقد في مواضع محددة أو التحقق من صحتها مقابل مخطط.

الأسئلة الشائعة

كلاهما يخزن بيانات منظمة، لكن XML يستخدم الوسوم ويدعم السمات والتعليقات والمخططات، بينما JSON أخف وزنًا ويرتبط مباشرةً بالمصفوفات والكائنات. يُستخدم JSON عادةً في واجهات برمجة التطبيقات (APIs)، بينما يُناسب XML المستندات والتكوين.

قم بتحميل الملف باستخدام SimpleXML أو DOMDocument، ثم غيّر قيم العقدة أو سماتها، ثم أعد كتابتها. باستخدام SimpleXML، عدّل الخاصية واستدعِ asXML('file.xml')؛ أما باستخدام DOMDocument، فعدّل العقدة واستدعِ save().

XPath هي لغة استعلام لاختيار العقد في مستند XML. في PHP، يمكنك استدعاء `$xml->xpath('//record/name')` باستخدام SimpleXML، أو استخدام فئة DOMXPath، لجلب العناصر المطابقة دون الحاجة إلى البحث.ping عبر الشجرة بأكملها.

نعم. يمكن للذكاء الاصطناعي توليد التعليمات البرمجية باستخدام دوال simplexml_load_string و json_encode و json_decode للتحويل بين الصيغ، وتحديد البيانات التي لا تتطابق بشكل صحيح، مثل سمات XML أو المحتوى المختلط. تحقق من النتيجة.

نعم. ألصق نموذجًا من ملف XML الخاص بك، وسيتمكن الذكاء الاصطناعي من إنتاج كود SimpleXML أو DOMDocument يقرأ العناصر والخصائص التي تحتاجها بالضبط، بما في ذلك حلقات التكرار للسجلات المتكررة. اختبره على ملفات حقيقية.

تلخيص هذه التدوينة بـ: