2008-10-27 7 views
1

몇 가지 속성이있는 DOMNode 객체가 있습니다. $ Node-> attributes는 DOMNamedNodeMap이며, 맵에서 항목 중 하나를 제거하는 메소드가 없습니다. DOMNode 클래스에는 요소에서 속성을 제거하는 메소드도 없습니다. 나는 다른 많은 관련 클래스들을 살펴 보았고 그들 중 어떤 것도 그 부모로부터 속성 노드를 제거하는 메커니즘을 제공하지 않는 것으로 보인다. (DOMNode ::로 removeChild 작동하지 않습니다, 그것은 내가 그것에 DOMAttr의 개체를 전달하는 경우 "찾을 수 없음 오류"가 발생합니다.)PHP : DOMNode 객체에서 속성 제거

을 제외하고 새로운 DOMNamedNodeMap을 구성하고를 제외한 그 모든 속성을 추가하는 나는 어떤 생각을하고 싶지 않아? 감사.

답변

3

일부 속성이있는 DOMNode이있는 경우 DOMElement이어야합니다. 어떤 경우에는 removeAttribute/removeAttributeNS/removeAttributeNode에 전화 할 수 있어야합니다.

PHP의 DOMNamedNodeMap 문서 getNamedItem[NS]는하지만, 그 일을하는 또 다른 방법이었을 것이다 존재 setNamedItem[NS]removeNamedItem[NS]를 인정하지 않는 것을 다소 호기심이다.

DOMNode::removeChildDOMAttr은 다른 자식의 어린이가 아니기 때문에 작동하지 않습니다. DOMNode; ‘attributes’childNodes의 별도 공간입니다. 또한 읽기 전용 속성이기 때문에 새로운 을 작성하여 DOMNode::attributes에 쓸 수는 없습니다.

+1

그게 전부 야! 고맙습니다. 아직 DOMNode도 DOMElement가 될 것이라고 나는 몰랐다. 그게 내가 ReflectionClass :: export()를 사용하지 않는 것입니다. :) – dirtside