Java tutorial
//package com.java2s; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main { /** * Get the first child element with the given name * * @param parentElement * @param name * @return */ public static Node getChildElement(Element parentElement, String name, String... filters) { final NodeList nodeList = parentElement.getElementsByTagName(name); if (nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { final Node node = (Node) nodeList.item(i); if (node instanceof Element && matchesFilters((Element) node, filters)) { return node; } else if (node instanceof Attr) { return node; } } } return null; } /** * Returns {@code true} if the element matches the filters. * * @param elem * @param filters * @return */ private static boolean matchesFilters(Element elem, String... filters) { for (String filter : filters) { final String attribute = extractFilterName(filter); final String value = extractFilterValue(filter); if (!elem.getAttribute(attribute).equals(value)) { return false; } } return true; } /** * Convenience method to extract name from {@code @fooAttribute="blagh"} * style filter. * * @param filter * @return */ private static String extractFilterName(String filter) { if (filter.startsWith("@")) { return filter.substring(1, filter.indexOf("=")); } else if (filter.startsWith(".")) { // means this element, so return null return null; } else { return filter.substring(0, filter.indexOf("=")); } } /** * Convenience method to extract value from {@code @fooAttribute="blagh"} * style filter. * * @param filter * @return */ private static String extractFilterValue(String filter) { return filter.substring(filter.indexOf("=\"") + 2, filter.lastIndexOf("\"")); } }