PHP وXML

XML هي لغة ترميزية تُستخدم لتخزين البيانات المنظمة ونقلها. على الرغم من أن JSON شائع جدًا في واجهات API الحديثة، إلا أن XML لا يزال مستخدمًا في العديد من الأنظمة، بما في ذلك التطبيقات القديمة وموجزات RSS وملفات خريطة الموقع وعمليات تكامل الدفع وتنسيقات المستندات وأنظمة المؤسسات وخدمات تبادل البيانات.

يوفر PHP عدة طرق لقراءة بيانات XML ومعالجتها. تتضمن أدوات XML الأكثر شيوعًا في PHP SimpleXML، وExpat parser، وDOM parser. كل محلل له أسلوب مختلف وهو مفيد في مواقف مختلفة.

تشرح هذه المقالة موضوعات PHP XML الرئيسية الموضحة في مسار التعلم: PHP XML المحلل اللغوي، PHP SimpleXML المحلل اللغوي، PHP SimpleXML get، PHP XML Expat parser، وPHP DOM parser.

PHP XML المحللون

XML parser هي أداة تقرأ محتوى XML وتسمح لـ PHP بالوصول إلى البيانات الموجودة بداخله. بدون محلل، XML هو نص عادي فقط. يساعد المحلل اللغوي PHP على فهم بنية XML وعناصره وسماته وقيمه النصية.

قد يبدو مستند XML البسيط كما يلي:

<?xml version="1.0" encoding="UTF-8"?>
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
    <year>2026</year>
</book>

يحتوي مستند XML هذا على عنصر جذر مسمى كتاب. يوجد بداخله عناصر فرعية: العنوان والمؤلف والسنة.

يمكن لـ PHP تحليل هذا XML باستخدام محللين مختلفين. الأساليب الأكثر شيوعًا هي:

  • SimpleXML: سهل الاستخدام ومناسب للمستندات XML البسيطة.

  • Expat parser: المحلل اللغوي القائم على الحدث مفيد لمعالجة XML خطوة بخطوة.

  • DOM parser: يقوم بتحميل XML في نموذج كائن المستند ويسمح بالتنقل والتعديل المتقدم.

يعتمد أفضل محلل على نوع وحجم مستند XML وما عليك فعله به.

لماذا يتم استخدام XML

يتم استخدام XML لتمثيل المعلومات المنظمة بتنسيق قابل للقراءة. يسمح بتنظيم البيانات باستخدام العلامات المخصصة. على عكس HTML، لا يحتوي XML على علامات عرض محددة مسبقًا. وبدلاً من ذلك، يقوم المطورون بتحديد العلامات بناءً على بنية البيانات.

على سبيل المثال، غالبًا ما تتم كتابة خريطة موقع موقع الويب باللغة XML. قد يحتوي على عناوين URL وتواريخ التعديل الأخير وتكرار التغيير وقيم الأولوية.

<url>
    <loc>https://example.com/article</loc>
    <lastmod>2026-06-10</lastmod>
    <changefreq>weekly</changefreq>
</url>

يمكن لـ PHP قراءة هذا XML واستخراج القيم مثل الصفحة URL وتاريخ آخر تعديل.

XML شائع أيضًا في موجزات RSS وواجهات برمجة تطبيقات SOAP وملفات التكوين وصادرات البيانات وعمليات تكامل المؤسسات القديمة. لهذا السبب، فإن تعلم تحليل XML في PHP لا يزال مفيدًا لمطوري الواجهة الخلفية.

PHP SimpleXML المحلل اللغوي

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

يكون SimpleXML مفيدًا عندما تكون بنية XML بسيطة ويمكن التنبؤ بها.

يقوم المثال التالي بتحميل XML من سلسلة:

<?php
$xmlText = '
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
    <year>2026</year>
</book>
';

$xml = simplexml_load_string($xmlText);

echo $xml->title;
echo $xml->author;
echo $xml->year;
?>

ال simplexml_load_string() تقرأ الدالة XML من سلسلة وترجع كائن SimpleXML.

إذا تم تخزين XML داخل ملف، فيمكنك استخدامه simplexml_load_file().

<?php
$xml = simplexml_load_file("book.xml");

echo $xml->title;
?>

يُستخدم SimpleXML بشكل شائع لقراءة موجزات RSS وملفات خريطة الموقع وملفات التكوين البسيطة واستجابات XML من الخدمات الخارجية.

قراءة العناصر XML التي تحتوي على SimpleXML

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

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book>
        <title>PHP Basics</title>
        <author>Adnan</author>
    </book>
    <book>
        <title>PHP OOP</title>
        <author>Noor</author>
    </book>
</books>

يمكنك قراءة الكتب هكذا:

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->book as $book) {
    echo $book->title;
    echo $book->author;
}
?>

هذا النمط بسيط وسهل القراءة، مما يجعل SimpleXML خيارًا جيدًا للمبتدئين.

PHP SimpleXML - احصل على

يمكن لـ SimpleXML أيضًا الحصول على السمات وأسماء العناصر ومساحات الأسماء والأطفال. وهذا أمر مهم لأن العديد من مستندات XML تخزن المعلومات داخل السمات، وليس فقط داخل العناصر.

على سبيل المثال، يستخدم هذا XML السمات:

<books>
    <book id="1" category="programming">
        <title>PHP Basics</title>
    </book>
    <book id="2" category="web">
        <title>Laravel Guide</title>
    </book>
</books>

يمكنك الحصول على السمات باستخدام attributes() طريقة.

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->book as $book) {
    $attributes = $book->attributes();

    echo $attributes["id"];
    echo $attributes["category"];
    echo $book->title;
}
?>

SimpleXML يوفر أيضًا children() طريقة الحصول على العناصر الفرعية

<?php
$xml = simplexml_load_file("books.xml");

foreach ($xml->children() as $child) {
    echo $child->getName();
}
?>

ال getName() تقوم الطريقة بإرجاع اسم العنصر XML الحالي.

<?php
$xml = simplexml_load_string("<book><title>PHP XML</title></book>");

echo $xml->getName();
?>

يعد الحصول على السمات والأسماء والعناصر الفرعية مفيدًا عند العمل مع ملفات XML حيث تحتوي البنية على بيانات التعريف أو المعرفات أو الفئات أو رموز اللغة أو السمات المخصصة.

SimpleXML ومعالجة الأخطاء

عند العمل مع XML، قد يكون المستند غير صالح أو معطل. لهذا السبب، من المهم معالجة أخطاء التحليل.

يمكنك استخدام libxml_use_internal_errors() للتحكم في أخطاء XML يدويًا.

<?php
libxml_use_internal_errors(true);

$xmlText = "<book><title>PHP XML</book>";

$xml = simplexml_load_string($xmlText);

if ($xml === false) {
    foreach (libxml_get_errors() as $error) {
        echo $error->message;
    }

    libxml_clear_errors();
} else {
    echo $xml->title;
}
?>

يساعد هذا في منع التطبيق من عرض تحذيرات المحلل اللغوي الأولية للمستخدمين ويسمح للمطورين بمعالجة أخطاء XML بطريقة أكثر نظافة.

PHP XML محلل المغتربين

Expat parser هو XML parser يستند إلى الحدث. هذا يعني أنه لا يقوم بتحميل مستند XML بأكمله في شجرة كائنات مثل SimpleXML أو DOM. وبدلاً من ذلك، يقرأ XML ويقوم بتشغيل الوظائف عندما يجد علامات الفتح وعلامات الإغلاق ومحتوى النص.

يعد Expat مفيدًا عندما تريد معالجة XML خطوة بخطوة. يمكن أن يكون مفيدًا لملفات XML الأكبر حجمًا لأنه لا يتطلب العمل مع بنية المستند الكاملة مرة واحدة.

يستخدم Expat parser وظائف المعالج. يتم استدعاء هذه الوظائف عند حدوث أحداث XML محددة.

<?php
function startElement($parser, $name, $attributes) {
    echo "Start element: " . $name;
}

function endElement($parser, $name) {
    echo "End element: " . $name;
}

function characterData($parser, $data) {
    echo "Data: " . trim($data);
}

$xmlText = "
<book>
    <title>PHP XML</title>
    <author>Adnan</author>
</book>
";

$parser = xml_parser_create();

xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");

xml_parse($parser, $xmlText);

xml_parser_free($parser);
?>

في هذا المثال، يستدعي PHP startElement() عندما يجد علامة فتح، endElement() عندما يجد علامة إغلاق، و characterData() عندما يجد محتوى النص.

يعد Expat أكثر تعقيدًا من SimpleXML، ولكنه يمنح المزيد من التحكم في كيفية معالجة XML.

متى تستخدم محلل المغتربين

يمكن أن يكون Expat parser مفيدًا عندما يكون الملف XML كبيرًا أو عندما تريد معالجة المستند بشكل تسلسلي. نظرًا لأنه يعمل كمحلل يعتمد على الأحداث، فيمكنه تجنب بعض مشكلات استخدام الذاكرة التي قد تحدث عند تحميل ملفات XML كبيرة جدًا في الذاكرة.

تشمل حالات الاستخدام المحتملة ما يلي:

  • قراءة الصادرات الكبيرة XML.

  • معالجة سجلات XML.

  • تحليل البيانات المتدفقة XML.

  • استخراج عناصر محددة فقط من ملف XML كبير.

  • بناء منطق معالجة XML مخصص.

بالنسبة لملفات XML الصغيرة العادية، يكون SimpleXML عادةً أسهل. بالنسبة للتحرير المعقد، قد يكون DOM أفضل. للقراءة القائمة على الحدث، المغترب مفيد.

PHP محلل DOM

يقوم DOM parser بتحميل XML في نموذج كائن المستند. وهذا يعني أن XML يصبح شجرة من العقد التي يمكن لـ PHP التنقل فيها أو قراءتها أو تعديلها أو إنشائها أو حذفها.

يعتبر DOM أقوى من SimpleXML عندما تحتاج إلى تحكم متقدم في XML. إنه مفيد عند تحرير مستندات XML أو العمل مع الهياكل المعقدة.

يقوم المثال التالي بتحميل XML باستخدام DOMDocument.

<?php
$xmlText = '
<book>
    <title>Learning PHP XML</title>
    <author>Adnan Mehrat</author>
</book>
';

$dom = new DOMDocument();

$dom->loadXML($xmlText);

$title = $dom->getElementsByTagName("title")->item(0)->nodeValue;

echo $title;
?>

ال getElementsByTagName() تقوم الطريقة بإرجاع العناصر ذات اسم علامة محدد. ال nodeValue تقوم الخاصية بإرجاع القيمة النصية للعقدة المحددة.

يمكن لـ DOM أيضًا تحميل XML من ملف.

<?php
$dom = new DOMDocument();

$dom->load("book.xml");

echo $dom->getElementsByTagName("author")->item(0)->nodeValue;
?>

يعد DOM مفيدًا عندما تحتاج إلى تحكم تفصيلي في شجرة XML.

إنشاء XML باستخدام محلل DOM

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

<?php
$dom = new DOMDocument("1.0", "UTF-8");
$dom->formatOutput = true;

$book = $dom->createElement("book");

$title = $dom->createElement("title", "PHP XML Guide");
$author = $dom->createElement("author", "Adnan Mehrat");

$book->appendChild($title);
$book->appendChild($author);

$dom->appendChild($book);

echo $dom->saveXML();
?>

يقوم هذا الرمز بإنشاء مستند XML باستخدام PHP بدلاً من كتابة XML يدويًا كسلسلة.

يعد استخدام DOM لإنشاء XML أكثر أمانًا ونظافة عندما تكون بنية المستند معقدة.

تعديل XML باستخدام محلل DOM

يمكن لـ DOM parser تعديل مستندات XML الموجودة. يمكنك تغيير قيم العقدة وإضافة عناصر جديدة وإزالة العناصر وحفظ XML المحدث.

<?php
$dom = new DOMDocument();
$dom->load("book.xml");

$title = $dom->getElementsByTagName("title")->item(0);
$title->nodeValue = "Updated PHP XML Guide";

$dom->save("book.xml");
?>

يمكنك أيضًا إضافة عنصر جديد.

<?php
$dom = new DOMDocument();
$dom->load("book.xml");

$book = $dom->getElementsByTagName("book")->item(0);

$year = $dom->createElement("year", "2026");

$book->appendChild($year);

$dom->save("book.xml");
?>

وهذا يجعل DOM مفيدًا عندما يحتاج PHP إلى تحديث ملفات تكوين XML أو إنشاء عمليات تصدير XML أو تغيير مستندات XML برمجيًا.

SimpleXML مقابل المغتربين مقابل DOM

يوفر PHP أكثر من XML parser لأن المشاريع المختلفة تحتاج إلى أساليب مختلفة.

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

مغترب هو الأفضل عندما تريد التحليل المستند إلى الحدث أو عندما تحتاج إلى معالجة XML خطوة بخطوة. يمكن أن يكون مفيدًا للمستندات الكبيرة XML أو المعالجة بأسلوب البث.

DOM هو الأفضل عندما تحتاج إلى تحكم متقدم في مستند XML. يمكنه قراءة وإنشاء وتحرير وحفظ XML باستخدام بنية شجرة.

مقارنة عملية:

  • يستخدم SimpleXML لخلاصات RSS، وخرائط الموقع، واستجابات XML البسيطة، والقراءة الأساسية.

  • يستخدم مغترب للتحليل المستند إلى الأحداث ومعالجة XML الكبيرة.

  • يستخدم DOM لإنشاء مستندات XML وتحريرها والتنقل فيها بعمق.

مثال عملي XML: قراءة ملف Sitemap

أحد الأمثلة الواقعية الشائعة XML هو قراءة ملف خريطة الموقع. تحتوي خريطة الموقع على عناوين URL التي يمكن لمحركات البحث الزحف إليها.

<urlset>
    <url>
        <loc>https://example.com/</loc>
        <lastmod>2026-06-10</lastmod>
    </url>
    <url>
        <loc>https://example.com/blog</loc>
        <lastmod>2026-06-09</lastmod>
    </url>
</urlset>

يمكنك قراءة خريطة الموقع هذه باستخدام SimpleXML.

<?php
$xml = simplexml_load_file("sitemap.xml");

foreach ($xml->url as $url) {
    echo $url->loc;
    echo $url->lastmod;
}
?>

يوضح هذا المثال سبب فائدة SimpleXML للملفات المنظمة البسيطة. فهو يسمح لك بالوصول إلى عناصر XML بطريقة نظيفة وقابلة للقراءة.

ملاحظات أمنية لـ PHP XML

عند العمل مع XML من مصادر خارجية، يعد الأمان أمرًا مهمًا. قد يأتي XML من تحميلات المستخدم أو واجهات API أو الموجزات أو الخدمات الخارجية التابعة لجهات خارجية.

تشمل الممارسات الأمنية المهمة ما يلي:

  • التحقق من صحة XML قبل معالجته.

  • التعامل مع أخطاء المحلل بأمان.

  • لا تثق بمحتوى XML من مصادر غير معروفة.

  • تجنب عرض قيم XML دون الهروب منها في HTML.

  • كن حذرًا مع ملفات XML الكبيرة جدًا لأنها قد تستهلك الذاكرة.

  • قم بتعطيل أو تجنب معالجة الكيان الخارجي غير الآمن عند عدم الحاجة إليها.

إذا تم عرض بيانات XML داخل صفحة HTML، فقم بالهروب من الإخراج باستخدام htmlspecialchars().

<?php
echo htmlspecialchars((string) $xml->title, ENT_QUOTES, "UTF-8");
?>

يساعد هذا في منع تفسير النص غير الآمن على أنه HTML أو JavaScript.

خاتمة

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

يعد فهم المحللين اللغويين PHP XML مفيدًا للعمل مع خرائط الموقع وموجزات RSS وواجهات API XML والصادرات وملفات التكوين والأنظمة القديمة. على الرغم من أن JSON يحظى بشعبية كبيرة اليوم، إلا أن XML يظل مهمًا في العديد من مشاريع الواجهة الخلفية في العالم الحقيقي.

بعد تعلم تحليل XML في PHP، الخطوة التالية هي التدرب على قراءة خلاصات RSS وإنشاء خريطة موقع وتحليل استجابات XML API وإنشاء ملفات تصدير XML من سجلات قاعدة البيانات.