"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني حذف عقدة XPath باستخدام SimpleXML وDOMDocument؟

كيف يمكنني حذف عقدة XPath باستخدام SimpleXML وDOMDocument؟

تم النشر بتاريخ 2024-11-08
تصفح:407

How Can I Delete an XPath Node Using SimpleXML and DOMDocument?

SimpleXML: حذف عقدة XPath

في هذه المقالة، سنستكشف كيفية حذف عقدة أصل بشكل فعال من مستند XML باستخدام SimpleXML وXPath.

فهم حدود SimpleXML

يحاول الكود المقدم استخدام SimpleXML لحذف العقدة الأصلية بعد العثور عليها عبر XPath. ومع ذلك، فإن وظيفة unset() الخاصة بـ SimpleXML تزيل فقط مرجع الكائن المخزن في متغير، وليس العقدة نفسها.

DOMDocument to the Rescue

للتغلب على قيود SimpleXML، خذ بعين الاعتبار باستخدام DOMDocument، الذي يعالج بنية مستندات XML بشكل أكثر مباشرة.

الحل باستخدام DOMDocument

    قم بإنشاء كائن DOMDocument وتحميل ملف XML فيه.
  1. استخدم XPath للاستعلام عن العقدة المستهدفة وتحديدها.
  2. قم بإزالة العقدة الأصلية باستخدام $node->parentNode->removeChild($node).

مثال للكود والمخرجات

$doc = new DOMDocument; $doc->loadXML(...); $item_id = 456; $xpath = new DOMXpath($doc); foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) { $node->parentNode->removeChild($node); } echo $doc->saveXML();
$doc = new DOMDocument;
$doc->loadXML(...);
$item_id = 456;

$xpath = new DOMXpath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}
echo $doc->saveXML();

الاستنتاج

يسمح DOMDocument بمعالجة أكثر قوة لمستندات XML، بما في ذلك الإزالة المباشرة للعقد. في حين أن SimpleXML يمكن أن يكون ملائمًا لاستعلامات XPath الأساسية، فإن DOMDocument يعد خيارًا أكثر ملاءمة لمهام معالجة XML الأكثر تعقيدًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3