SimpleXML: удаление узла XPath
В этой статье мы рассмотрим, как эффективно удалить родительский узел из XML-документа с помощью SimpleXML и XPath.
Понимание SimpleXML Ограничения
Приведенный код пытается использовать SimpleXML для удаления родительского узла после его обнаружения с помощью XPath. Однако функция unset() SimpleXML удаляет только ссылку на объект, хранящуюся в переменной, а не сам узел.
DOMDocument спешит на помощь
Чтобы преодолеть ограничения SimpleXML, рассмотрим использование DOMDocument, который более непосредственно манипулирует структурой XML-документов.
Решение с использованием DOMDocument
Пример кода и вывода
$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