有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java删除节点的所有子节点

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

<employee> 
     <one/>
     <two/>
     <three/>
 </employee>

变成:

   <employee>
   </employee>

我想删除employee的所有子节点


共 (6) 个答案

  1. # 1 楼答案

    只需使用:

    Node result = node.cloneNode(false);
    

    作为文件:

    Node cloneNode(boolean deep)
    deep - If true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an Element).
    
  2. # 2 楼答案

    无需移除子节点的子节点

    public static void removeChilds(Node node) {
        while (node.hasChildNodes())
            node.removeChild(node.getFirstChild());
    }
    
  3. # 3 楼答案

    public static void removeAllChildren(Node node)
    {
      for (Node child; (child = node.getFirstChild()) != null; node.removeChild(child));
    }
    
  4. # 4 楼答案

        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);
            }
        }
    }
    

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

  5. # 5 楼答案

    public static void removeAllChildren(Node node) {
        NodeList nodeList = node.getChildNodes();
        int i = 0;
        do {
            Node item = nodeList.item(i);
            if (item.hasChildNodes()) {
                removeAllChildren(item);
                i--;
            }
            node.removeChild(item);
            i++;
        } while (i < nodeList.getLength());
    }
    
  6. # 6 楼答案

    private static void removeAllChildNodes(Node node) {
        NodeList childNodes = node.getChildNodes();
        int length = childNodes.getLength();
        for (int i = 0; i < length; i++) {
            Node childNode = childNodes.item(i);
            if(childNode instanceof Element) {
                if(childNode.hasChildNodes()) {
                    removeAllChildNodes(childNode);                
                }        
                node.removeChild(childNode);  
            }
        }
    }