At the time of writing, I suppose rightfully, removeChild() removes only the selected node, but when you remove an element, it's child elements are not removed. If you want to achieve that, replaceChild() is the solution.
The following should remove all descendants of the $node DOMNode, regardless of it's name:
$node->replaceChild(new DOMElement($node->nodeName), $node);
If you're replacing the root element, you must explicitly state that with $node->documentElement as the second argument.