PHP:从 DOMNode 对象中删除属性

dir*_*ide 3 php dom

我有一个DOMNode具有一些属性的对象。$Node->attributes是 a DOMNamedNodeMap,它没有方法删除映射中的条目之一。该类DOMNode也没有从元素中删除属性的方法。我查看了许多其他相关类,但它们似乎都没有提供从其父级删除属性节点的机制。

DOMNode::removeChild不起作用;如果我将对象传递给它,它会抛出“未找到错误” DOMAttr

除了构建一个新的属性DOMNamedNodeMap并向其添加除我不想要的属性之外的所有属性之外......还有什么想法吗?谢谢。

bob*_*nce 5

如果您有一个DOMNode具有某些属性的 a,那么它一定是一个DOMElement. 在这种情况下,您应该能够调用removeAttribute/removeAttributeNS/removeAttributeNode它。

\n\n

有点奇怪的是,PHP 的DOMNamedNodeMap文档getNamedItem[NS]却不承认setNamedItem[NS]和 的存在removeNamedItem[NS],这本来是另一种实现方式。

\n\n

DOMNode::removeChild无法工作,因为 aDOMAttr不是 another 的子级,DOMNode; \xe2\x80\x98attributes\xe2\x80\x99而是 的一个单独空间childNodes。您也不能NamedNodeMap单独创建一个新的属性来写入DOMNode::attributes,因为这是一个只读属性。

\n