PHP: удаление атрибута из объекта DOMNode - PullRequest
2 голосов
/ 27 октября 2008

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

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

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

1 Ответ

4 голосов
/ 27 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...