العمل مع XML في PHP: من التحليل البسيط إلى إنشاء المستندات المعقدة
XML (eXtensible Markup Language) لا يزال أحد التنسيقات الرئيسية لتبادل البيانات، وملفات التكوين، وخدمات الويب (SOAP, RSS/Atom). يوفر PHP العديد من الإضافات المدمجة القوية للعمل مع XML، والتي تسمح بحل أي مهمة تقريبًا - من تحليل خلاصات RSS البسيطة إلى إنشاء مستندات معقدة مع مساحات الأسماء. في هذه المقالة، سنستعرض الأدوات الرئيسية: SimpleXML، DOMDocument، و XMLReader، وسنتعلم أيضًا كيفية إنشاء مستندات XML بشكل فوري.
1. SimpleXML — تحليل سريع وسهل
SimpleXML هو أبسط إضافة للعمل مع XML. يقوم بتحويل مستند XML إلى كائن يمكن قراءة خصائصه كمصفوفات وكائنات عادية. مثالي للمستندات الصغيرة والمتوسطة عندما لا تكون هناك حاجة إلى تنقل معقد.
تحميل XML من سلسلة نصية أو ملف
<?php// من سلسلة نصية$xmlString = '<book><title>PHP للمبتدئين</title><author>إيفان بيتروف</author></book>';$book = simplexml_load_string($xmlString);
// من ملف$books = simplexml_load_file('books.xml');
echo $book->title; // PHP للمبتدئينecho $book->author; // إيفان بيتروف?>العمل مع السمات والعناصر المتعددة
<?php$xml = '<library> <book id="1"> <title>PHP Objects</title> <author>Matt Zandstra</author> </book> <book id="2"> <title>Clean Code</title> <author>Robert C. Martin</author> </book></library>';
$library = simplexml_load_string($xml);
foreach ($library->book as $book) { echo 'ID: ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';}// ID: 1 — PHP Objects (Matt Zandstra)// ID: 2 — Clean Code (Robert C. Martin)?>هام: SimpleXML لا يدعم استعلامات XPath المعقدة مع الشروط (فقط المسارات البسيطة). للاستعلامات الأكثر قوة، استخدم DOMDocument أو XPath.
2. DOMDocument — تحكم كامل في XML
DOMDocument يطبق واجهة برمجة تطبيقات DOM من W3C ويمنح تحكمًا كاملاً في هيكل المستند. يمكنك إضافة، حذف، تعديل أي عقد، العمل مع مساحات الأسماء، وتنفيذ استعلامات XPath بأي درجة من التعقيد. هذا هو الخيار للمهام الاحترافية.
التحليل والتنقل باستخدام DOMDocument
<?php$dom = new DOMDocument();$dom->load('books.xml');
// الحصول على جميع عناصر <book>$books = $dom->getElementsByTagName('book');
foreach ($books as $book) { $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; echo "الكتاب: $title, المؤلف: $author<br>";}?>XPath — استعلامات قوية لـ XML
<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);
// البحث عن جميع الكتب بسعر > 500$expensiveBooks = $xpath->query('//book[price > 500]');
foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' روبل<br>';}?>3. إنشاء مستندات XML
PHP لا يسمح فقط بقراءة XML، بل أيضًا بإنشاء مستندات XML. دعنا نستعرض كلا النهجين.
إنشاء XML عبر SimpleXML
<?php$xml = new SimpleXMLElement('<catalog></catalog>');
$product = $xml->addChild('product');$product->addChild('name', 'لابتوب');$product->addChild('price', 75000);$product->addAttribute('id', '12