PHP:从DOMNode对象中删除属性
问题描述:
我有一个DOMNode对象具有一些属性。 $ Node-> attributes是一个DOMNamedNodeMap,它没有方法去除地图中的一个条目。 DOMNode类也没有从元素中删除属性的方法。我查看了许多其他相关的类,并且他们都没有提供从父类中删除属性节点的机制。从构建一个新的DOMNamedNodeMap并增加所有属性将其除了的一个PHP:从DOMNode对象中删除属性
待用;(它抛出一个“未找到错误”如果我通过一个DOMAttr对象给它的DOMNode :: removeChild之不起作用。)我不想...任何想法?谢谢。
答
如果你有一个DOMNode
有一些属性,它必须是DOMElement
。在这种情况下,您应该可以拨打removeAttribute/removeAttributeNS/removeAttributeNode
。
这是有点好奇PHP的DOMNamedNodeMap
文件getNamedItem[NS]
,但不承认存在setNamedItem[NS]
和removeNamedItem[NS]
,这将一直这样做的另一种方式。
DOMNode::removeChild
不能工作,因为DOMAttr
不是另一个的子女DOMNode; ‘attributes’
是与childNodes
分开的空间。您也无法单独创建新的NamedNodeMap
以写入DOMNode::attributes
,因为这是只读属性。
就是这样!谢谢。我还没有意识到DOMNode也是一个DOMElement。这就是我没有使用ReflectionClass :: export()足够:) – dirtside 2008-10-27 16:20:45