«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как удалить узел XPath с помощью SimpleXML и DOMDocument?

Как удалить узел XPath с помощью SimpleXML и DOMDocument?

Опубликовано 8 ноября 2024 г.
Просматривать:847

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

SimpleXML: удаление узла XPath

В этой статье мы рассмотрим, как эффективно удалить родительский узел из XML-документа с помощью SimpleXML и XPath.

Понимание SimpleXML Ограничения

Приведенный код пытается использовать SimpleXML для удаления родительского узла после его обнаружения с помощью XPath. Однако функция unset() SimpleXML удаляет только ссылку на объект, хранящуюся в переменной, а не сам узел.

DOMDocument спешит на помощь

Чтобы преодолеть ограничения SimpleXML, рассмотрим использование DOMDocument, который более непосредственно манипулирует структурой XML-документов.

Решение с использованием DOMDocument

  1. Создайте объект DOMDocument и загрузите в него XML-файл.
  2. Используйте XPath для запроса и выбора целевого узла.
  3. Удалить родительский узел узел с использованием $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();

Этот код удаляет узел для продукта с item_id 456, в результате чего получается измененный XML-документ без этого узла.

Заключение

DOMDocument позволяет более надежно манипулировать XML-документами, включая прямое удаление узлов. Хотя SimpleXML может быть удобен для базовых запросов XPath, DOMDocument является более подходящим выбором для более сложных задач манипулирования XML.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3