Java XML Child Remove All removeAllChildNodes(Node node, String name)

Here you can find the source of removeAllChildNodes(Node node, String name)

Description

removes any immediate child nodes with the given name.

License

Open Source License

Declaration

public static void removeAllChildNodes(Node node, String name) 

Method Source Code

//package com.java2s;
/**/*from   ww  w . j a v  a  2  s  .c  o m*/
 * Copyright (c) 2007-2008. MB Software Vancouver, Canada. All Rights Reserved.
 * This software is published under the GPL GNU General Public License. 
 * This program is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 
 * of the License, or (at your option) any later version.
 *  
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 * 
 * This software was written for 
 * MB Software, margaritabowl.com
 * Vancouver, B.C., Canada 
 */

import java.util.ArrayList;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    /**
     * removes any immediate child nodes with the given name.
     */
    public static void removeAllChildNodes(Node node, String name) {
        // this must be done as a 2 pass algorithm. 
        // attempt at doing it at single pass fails because the list is 
        // being altered as we read it which leads to errors.
        ArrayList<Node> removeList = getChildNodes(node, name);

        for (Node temp : removeList) {
            node.removeChild(temp);
        }
    }

    /**
     * @return a list of all child nodes with this name
     */
    public static ArrayList<Node> getChildNodes(Node node, String name) {
        ArrayList<Node> results = new ArrayList<Node>();

        NodeList nodeList = node.getChildNodes();
        for (int i = 0; i < nodeList.getLength(); i++) {
            Node temp = nodeList.item(i);
            if (temp.getNodeType() != Node.ELEMENT_NODE)
                continue;
            if (name.equals(temp.getLocalName()) || name.equals(temp.getNodeName())) {
                results.add(temp);
            }
        }

        return (results);
    }
}

Related

  1. removeAllChildElements(@Nonnull final Element aElement)
  2. removeAllChildNodes(Node node)
  3. removeAllChildNodes(Node node)
  4. removeAllChildNodes(Node node)
  5. removeAllChildren(Element deps)
  6. removeAllChildren(Element node, String elementName)
  7. removeAllChildren(final Element element)
  8. removeAllChildren(final Node node)