العمل مع XML في PHP: DOMDocument وSimpleXML وXPath

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع XML في PHP: DOMDocument وSimpleXML وXPath

XML (لغة الترميز القابلة للتوسع) لا يزال أحد التنسيقات الرئيسية لتبادل البيانات وتخزين التهيئات والتكامل مع الخدمات الخارجية (خلاصات RSS وSOAP وAPI). توفر PHP عدة إضافات مدمجة قوية للعمل مع XML. في هذه المقالة، سنستعرض ثلاثة أساليب رئيسية: DOMDocument (نموذج كائن المستند)، SimpleXML (بسيط وبديهي) وXPath (لغة استعلام للتنقل).



1. التحضير: مثال على مستند XML

لجميع الأمثلة، سنستخدم نفس ملف XML catalog.xml:

<?xml version="1.0" encoding="UTF-8"?><catalog>    <book id="1">        <title>PHP للمبتدئين</title>        <author>إيفان بيتروف</author>        <price currency="RUB">1200</price>    </book>    <book id="2">        <title>XML بالتفصيل</title>        <author>ماريا سيدوروفا</author>        <price currency="RUB">950</price>    </book></catalog>


2. DOMDocument — تحكم كامل في XML

إضافة DOMDocument تنفذ W3C DOM Level 2. تمنحك أقصى تحكم: يمكنك إنشاء وحذف وتعديل أي عقد وسمات ومحتوى نصي. مناسبة للسيناريوهات المعقدة التي تتطلب تحكمًا دقيقًا في الهيكل.



تحميل وقراءة XML

<?php$dom = new DOMDocument();$dom->load('catalog.xml'); // أو loadXML($xmlString)

$books = $dom->getElementsByTagName('book');foreach ($books as $book) { $id = $book->getAttribute('id'); $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; $price = $book->getElementsByTagName('price')->item(0)->nodeValue; echo "كتاب #$id: $title — $author, $price روبل.";}?>


إنشاء XML جديد

<?php$dom = new DOMDocument('1.0', 'UTF-8');$root = $dom->createElement('catalog');$dom->appendChild($root);

$book = $dom->createElement('book');$book->setAttribute('id', '3');$title = $dom->createElement('title', 'PHP وXML');$book->appendChild($title);$root->appendChild($book);

echo $dom->saveXML(); // يعرض سلسلة XML// $dom->save('new_catalog.xml');?>


3. SimpleXML — البساطة والراحة

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



قراءة XML باستخدام SimpleXML

<?php$xml = simplexml_load_file('catalog.xml'); // أو simplexml_load_string($xmlString)

foreach ($xml->book as $book) { $id = (string)$book['id']; $title = (string)$book->title; $author = (string)$book->author; $price = (string)$book->price; echo "كتاب #$id: $title — $author, $price روبل.";}?>


إنشاء XML عبر SimpleXML

<?php$xml = new SimpleXMLElement('<catalog></catalog>');$book = $xml->addChild('book');$book->addAttribute('id', '4');$book->addChild('title', 'SimpleXML Guide');$book->addChild('price', 800)->addAttribute('currency', 'RUB');

echo $xml->asXML();// $xml->asXML('output.xml');?>


تعديل البيانات

<?php$xml = simplexml_load_file('catalog.xml');$xml->book[0]->price = 1300; // تغيير سعر الكتاب الأول$xml->asXML('catalog_updated.xml');?>


4. XPath — بحث مرن في المستند

توصيات