Java tutorial
//package com.java2s; /* * Copyright 1997-2015 Unidata Program Center/University Corporation for Atmospheric Research * Copyright 2010-2015 Jeff McWhirter * * This library 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 2.1 of the License, or (at * your option) any later version. * * This library 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 this library; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ import org.w3c.dom.*; import java.util.ArrayList; import java.util.List; public class Main { /** * Find the first descendant element of the given parent Node * whose tag name.equals the given tag. * * @param parent The root of the xml dom tree to search. * @param tag The tag name to match. * @return The element foudn or null */ public static Element findDescendant(Node parent, String tag) { ArrayList found = new ArrayList(); findDescendants(parent, tag, found); if (found.size() == 0) { return null; } return (Element) found.get(0); } /** * Find all of the descendant elements of the given parent Node * whose tag name.equals the given tag. * * @param parent The root of the xml dom tree to search. * @param tag The tag name to match. * @return The list of descendants that match the given tag. */ public static List findDescendants(Node parent, String tag) { ArrayList found = new ArrayList(); findDescendants(parent, tag, found); return found; } /** * Find all of the descendant elements of the given parent Node * whose tag name equals the given tag. * * @param parent The root of the xml dom tree to search. * @param tag The tag name to match. * @param found The list of descendants that match the given tag. */ private static void findDescendants(Node parent, String tag, List found) { if (getNodeName(parent).equals(tag)) { found.add(parent); } NodeList children = parent.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); findDescendants(child, tag, found); } } /** * Get the non qualified tag name * * @param node node * * @return node name */ public static String getNodeName(Node node) { String localName = node.getLocalName(); if (localName != null) { return localName; } String name = node.getNodeName(); int idx = name.indexOf(":"); if (idx >= 0) { name = name.substring(idx + 1); } return name; } /** * Get the non qualified tag name * * @param element element * * @return tag name */ public static String getLocalName(Node element) { String localName = element.getLocalName(); if (localName != null) { return localName; } String name = element.getNodeName(); int idx = name.indexOf(":"); if (idx >= 0) { name = name.substring(idx + 1); } return name; } }