我有一个DOMNode
对象,它有一些属性。 $Node->attributes
是DOMNamedNodeMap
,没有方法可以删除地图中的某个条目。 DOMNode
类也没有从元素中删除属性的方法。我查看了许多其他相关的类,但它们似乎都没有提供从父类中删除属性节点的机制。
DOMNode::removeChild
不起作用;如果我将DOMAttr
对象传递给它,它会抛出“未找到错误”。
除了构建新的DOMNamedNodeMap
并将所有属性添加到之外我不想要的那个......任何想法?感谢。
答案 0 :(得分:4)
如果您的DOMNode
有一些属性,那么它必须是DOMElement
。在这种情况下,您应该可以在其上调用removeAttribute/removeAttributeNS/removeAttributeNode
。
有点好奇PHP的DOMNamedNodeMap
文档getNamedItem[NS]
但不承认存在setNamedItem[NS]
和removeNamedItem[NS]
,这可能是另一种方式。
DOMNode::removeChild
无效,因为DOMAttr
不是另一个DOMNode; ‘attributes’
的孩子,childNodes
是一个独立的空间。您也无法自己创建新的NamedNodeMap
来写入DOMNode::attributes
,因为这是一个只读属性。