2008-10-27 157 views
1

我有一个DOMNode对象具有一些属性。 $ Node-> attributes是一个DOMNamedNodeMap,它没有方法去除地图中的一个条目。 DOMNode类也没有从元素中删除属性的方法。我查看了许多其他相关的类,并且他们都没有提供从父类中删除属性节点的机制。从构建一个新的DOMNamedNodeMap并增加所有属性将其除了的一个PHP:从DOMNode对象中删除属性

待用;(它抛出一个“未找到错误”如果我通过一个DOMAttr对象给它的DOMNode :: removeChild之不起作用。)我不想...任何想法?谢谢。

回答

3

如果你有一个DOMNode有一些属性,它必须是DOMElement。在这种情况下,您应该可以拨打removeAttribute/removeAttributeNS/removeAttributeNode

这是有点好奇PHP的DOMNamedNodeMap文件getNamedItem[NS],但不承认存在setNamedItem[NS]removeNamedItem[NS],这将一直这样做的另一种方式。

DOMNode::removeChild不能工作,因为DOMAttr不是另一个的子女DOMNode; ‘attributes’是与childNodes分开的空间。您也无法单独创建新的NamedNodeMap以写入DOMNode::attributes,因为这是只读属性。

+1

就是这样!谢谢。我还没有意识到DOMNode也是一个DOMElement。这就是我没有使用ReflectionClass :: export()足够:) – dirtside 2008-10-27 16:20:45