العمل مع XML في PHP: دليل شامل للمطورين
XML (لغة الترميز القابلة للتوسيع) لا يزال أحد التنسيقات الرئيسية لتبادل البيانات، وتكوين التطبيقات، والتكامل مع الخدمات الخارجية. توفر PHP عدة أدوات قوية للعمل مع XML، كل منها مناسب لسيناريوهات مختلفة. في هذه المقالة، سنشرح بالتفصيل المكتبات والمناهج الأساسية المستخدمة في تطوير PHP الحديث.
الأدوات الأساسية في PHP للعمل مع XML
توجد في PHP ثلاث إضافات رئيسية للعمل مع XML، لكل منها ميزاتها ومجالات تطبيقها:
- SimpleXML — محلل بسيط وبديهي لقراءة XML. مثالي للملفات الصغيرة والمعالجة السريعة.
- DOMDocument — تطبيق كامل لـ W3C DOM للعمل مع مستندات XML. يدعم القراءة والكتابة والتعديل والتحقق من الصحة.
- XMLReader / XMLWriter — محللات تدفقية للعمل مع ملفات XML كبيرة (مئات الميغابايت والغيغابايت).
1. SimpleXML — بداية سريعة
يتيح SimpleXML تحويل سلسلة XML أو ملف إلى كائن يمكن التعامل معه كمصفوفة عادية أو كائن. هذا هو الخيار الأكثر شيوعًا للمهام البسيطة.
<?php// قراءة XML من سلسلة نصية$xmlString = '<books> <book id="1"> <title>PHP للمبتدئين</title> <author>إيفان بيتروف</author> <price currency="RUB">1500</price> </book> <book id="2"> <title>XML بالتفصيل</title> <author>آنا سميرنوفا</author> <price currency="RUB">2000</price> </book></books>';
$xml = simplexml_load_string($xmlString);
// الوصول إلى البياناتforeach ($xml->book as $book) { echo "ID: " . $book['id'] . ""; echo "العنوان: " . $book->title . ""; echo "المؤلف: " . $book->author . ""; echo "السعر: " . $book->price . " " . $book->price['currency'] . "
";}
// إنشاء XML جديد$newXml = new SimpleXMLElement('<catalog/>');$product = $newXml->addChild('product');$product->addAttribute('sku', 'P001');$product->addChild('name', 'لابتوب');$product->addChild('price', 55000);
echo $newXml->asXML();?>2. DOMDocument — تحكم كامل
يوفر DOMDocument وصولاً كاملاً إلى نموذج كائن المستند. يمكنك إنشاء وتعديل وحذف أي عقد، بالإضافة إلى تنفيذ استعلامات XPath للبحث عن البيانات.
<?php$dom = new DOMDocument('1.0', 'UTF-8');$dom->formatOutput = true;
// إنشاء العنصر الجذر$root = $dom->createElement('employees');$dom->appendChild($root);
// إضافة موظف$employee = $dom->createElement('employee');$employee->setAttribute('id', '101');
$name = $dom->createElement('name', 'أليكسي كوزنيتسوف');$employee->appendChild($name);
$position = $dom->createElement('position', 'مطور');$employee->appendChild($position);
$root->appendChild($employee);
// استعلام XPath$xpath = new DOMXPath($dom);$query = "//employee[@id='101']/name";$result = $xpath->query($query);
if ($result->length > 0) { echo "تم العثور على: " . $result->item(0)->nodeValue;}
// الحفظ في ملف$dom->save('employees.xml');?>3. XMLReader و XMLWriter — للبيانات الكبيرة
عندما تصبح ملفات XML كبيرة جدًا بحيث لا يمكن تحميلها في الذاكرة (أكثر من 10-50 ميغابايت)، تأتي المحللات التدفقية للإنقاذ. يقرأ XMLReader المستند عقدة بعقدة، بينما ينشئ XMLWriter ملف XML على أجزاء.
<?php// قراءة ملف XML كبير$reader = new XMLReader();$reader->open('large_data.xml');
while ($reader->read(