PHP: удаление атрибута из объекта DOMNode

У меня есть объект DOMNode с некоторыми атрибутами. $Node->attributes - это DOMNamedNodeMap, в котором нет методов удаления одной из записей на карте. Класс DOMNode также не имеет методов для удаления атрибутов из элемента. Я просмотрел ряд других связанных классов, и ни один из них, похоже, не предоставляет механизма для удаления узла атрибута из его родительского элемента.

DOMNode::removeChild не работает; он выдает ошибку «Не найдено», если я передаю ему объект DOMAttr.

Помимо создания нового DOMNamedNodeMap и добавления к нему всех атрибутов Кроме тот, который мне не нужен ... какие-нибудь идеи? Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
1 647
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть DOMNode с некоторыми атрибутами, это должен быть DOMElement. В этом случае вы сможете вызвать по нему в removeAttribute/removeAttributeNS/removeAttributeNode.

Несколько любопытно, что DOMNamedNodeMap PHP документирует getNamedItem[NS], но не признает существование setNamedItem[NS] и removeNamedItem[NS], что было бы другим способом сделать это.

DOMNode::removeChild не может работать, потому что DOMAttr не является потомком другого DOMNode; ‘attributes’, это отдельное пространство для childNodes. Вы также не можете создать новый NamedNodeMap для записи в DOMNode::attributes, поскольку это свойство только для чтения.

Вот и все! Спасибо. Я еще не догадывался, что DOMNode также будет DOMElement. Вот что я получаю за то, что недостаточно использовал ReflectionClass :: export () :)

dirtside 27.10.2008 19:20

Другие вопросы по теме