Java tutorial
//package com.java2s; /* Copyright 2011-2014 Red Hat, Inc This file is part of PressGang CCMS. PressGang CCMS is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PressGang CCMS 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with PressGang CCMS. If not, see <http://www.gnu.org/licenses/>. */ import java.util.ArrayList; import java.util.List; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main { /** * Scans a node and all of its children for nodes of a particular type. * * @param parent The parent node to search from. * @param nodeNames A single node name or list of node names to search for * @return A List of all the nodes found matching the nodeName(s) under the parent */ public static List<Node> getChildNodes(final Node parent, final String... nodeNames) { return getChildNodes(parent, true, nodeNames); } /** * Scans a node and all of its children for nodes of a particular type. * * @param parent The parent node to search from. * @param recursiveSearch If the child nodes should be recursively searched. * @param nodeNames A single node name or list of node names to search for * @return a List of all the nodes found matching the nodeName under the parent */ protected static List<Node> getChildNodes(final Node parent, boolean recursiveSearch, final String... nodeNames) { final List<Node> nodes = new ArrayList<Node>(); final NodeList children = parent.getChildNodes(); for (int i = 0; i < children.getLength(); ++i) { final Node child = children.item(i); for (final String nodeName : nodeNames) { if (child.getNodeName().equals(nodeName)) { nodes.add(child); } if (recursiveSearch) { nodes.addAll(getChildNodes(child, true, nodeName)); } } } return nodes; } }