آموزش PHP XML DOM

php xml dom guide
20 آبان 1403

اگه می‌خوای با سندهای XML توی PHP کار کنی، می‌تونی از DOM استفاده کنی که واقعا کار رو راحت‌تر می‌کنه. DOM (Document Object Model) یه روشیه که XML رو به یه درخت تبدیل می‌کنه. این یعنی هر کدوم از عناصر XML یه نودی توی این درخت هستن و می‌تونی به راحتی با اونها کار کنی. استفاده از DOM این امکان رو میده که بتونی به راحتی داده‌ها رو از XML بگیری، ویرایش کنی یا حتی عناصر جدیدی اضافه کنی.

مثلاً فرض کن شما یه فایل XML داری که محصولات یه فروشگاه رو ذخیره کرده. حالا می‌تونی با DOM این فایل رو بخونی و اطلاعات محصولات رو بگیری. یا حتی می‌تونی یه محصول جدید اضافه کنی و فایل XML رو به‌روزرسانی کنی.

استفاده از DOM توی PHP خیلی ساده‌ست. فقط کافیه بوسیله‌ی کلاس DOMDocument این کار رو انجام بدی. توی چند خط کد، می‌تونی به راحتی به ساختار XML دسترسی پیدا کنی و اطلاعات رو به‌روزرسانی کنی. این یه راهنمایی کلی از چیزی بود که می‌خوای یاد بگیری. تو ادامه یه مثال می‌زنم که این فرایند رو بیشتر برات روشن می‌کنه.

نمونه کد PHP برای کار با XML DOM


<?php
$xmlString = '<products><product><name>Laptop</name><price>800</price></product><product><name>Smartphone</name><price>600</price></product></products>';
$dom = new DOMDocument();
$dom->loadXML($xmlString);
$products = $dom->getElementsByTagName('product');
foreach ($products as $product) {
    $name = $product->getElementsByTagName('name')[0]->nodeValue;
    $price = $product->getElementsByTagName('price')[0]->nodeValue;
    echo 'Product: ' . $name . ', Price: ' . $price . "\n";
}
?>

شرح خط به خط کد فوق

<?php – این خط نشان‌دهندهٔ شروع کد PHP است.
$xmlString – در اینجا یک رشتهٔ XML با عناصر product تعریف شده است.
$dom = new DOMDocument(); – یک شی جدید از کلاس DOMDocument ساخته می‌شود که مدیریت XML را انجام می‌دهد.
$dom->loadXML($xmlString); – بارگذاری رشتهٔ XML به داخل شی DOMDocument.
$products = $dom->getElementsByTagName('product'); – تمام عناصر product از XML گرفته می‌شوند.
foreach ($products as $product) { ... } – حلقه‌ای برای پیمایش در تمامی محصولات موجود در XML.
$name = $product->getElementsByTagName('name')[0]->nodeValue; – گرفتن نام هر محصول از XML.
$price = $product->getElementsByTagName('price')[0]->nodeValue; – گرفتن قیمت هر محصول از XML.
echo 'Product: ' . $name . ', Price: ' . $price . "\n"; – چاپ اطلاعات محصول شامل نام و قیمت.

سوالات متداول

؟

چطور می‌تونم یه عنصر جدید به XML اضافه کنم با PHP DOM?

؟

چطوری می‌تونم مقدار یه عنصر XML رو تغییر بدم با PHP DOM?