PHP:从DOMNode对象中删除属性

时间:2008-10-27 14:57:58

标签: php dom

我有一个DOMNode对象,它有一些属性。 $Node->attributesDOMNamedNodeMap,没有方法可以删除地图中的某个条目。 DOMNode类也没有从元素中删除属性的方法。我查看了许多其他相关的类,但它们似乎都没有提供从父类中删除属性节点的机制。

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

除了构建新的DOMNamedNodeMap并将所有属性添加到之外我不想要的那个......任何想法?感谢。

1 个答案:

答案 0 :(得分:4)

如果您的DOMNode有一些属性,那么它必须是DOMElement。在这种情况下,您应该可以在其上调用removeAttribute/removeAttributeNS/removeAttributeNode

有点好奇PHP的DOMNamedNodeMap文档getNamedItem[NS]但不承认存在setNamedItem[NS]removeNamedItem[NS],这可能是另一种方式。

DOMNode::removeChild无效,因为DOMAttr不是另一个DOMNode; ‘attributes’的孩子,childNodes是一个独立的空间。您也无法自己创建新的NamedNodeMap来写入DOMNode::attributes,因为这是一个只读属性。