删除节点的所有子节点

aks*_*hay 9 java xml parsing dom

我有一个DOM文档的节点.如何删除其所有子节点?例如:

<employee> 
     <one/>
     <two/>
     <three/>
 </employee>
Run Code Online (Sandbox Code Playgroud)

变为:

   <employee>
   </employee>
Run Code Online (Sandbox Code Playgroud)

我想删除所有子节点employee.

小智 43

无需删除子节点的子节点

public static void removeChilds(Node node) {
    while (node.hasChildNodes())
        node.removeChild(node.getFirstChild());
}
Run Code Online (Sandbox Code Playgroud)


Hun*_*len -1

    public static void removeAll(Node node) 
    {
        for(Node n : node.getChildNodes())
        {
            if(n.hasChildNodes()) //edit to remove children of children
            {
              removeAll(n);
              node.removeChild(n);
            }
            else
              node.removeChild(n);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将通过传入员工节点来删除节点的所有子元素。

  • [`Node#getChildNodes()`](http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html#getChildNodes%28%29) 不能与 Java 的 foreach 一起使用循环,因为`Node#getChildNodes()`返回一个[`NodeList`](http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/NodeList.html),它没有实现[`java.lang.Iterable`](http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html) 接口。 (3认同)