Java tutorial
//package com.java2s; //License from project: Open Source License import java.util.LinkedList; import java.util.List; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main { /** * Reqursion search in node for elements with paramantrs * @param node * @param tagName * @param attrName * @param attrValue * @return */ public static List<Element> findAllElementsByAttribute(Node node, String tagName, String attrName, String attrValue) { List<Element> result = new LinkedList<Element>(); findAllElementsByAttribute(node, tagName, attrName, attrValue, result); return result; } private static void findAllElementsByAttribute(Node node, String tagName, String attrName, String attrValue, List<Element> result) { if (node == null) { return; } NodeList nodeList = node.getChildNodes(); if (nodeList == null) { return; } for (int i = 0; i < nodeList.getLength(); ++i) { Node currNode = nodeList.item(i); Element element = checkIfElement(currNode, tagName); if (element != null && element.getAttribute(attrName).equals(attrValue)) { result.add(element); continue; } findAllElementsByAttribute(currNode, tagName, attrName, attrValue, result); } } public static final Element checkIfElement(Node node) { Element result = null; if (isElement(node)) { result = (Element) node; } return result; } public static final Element checkIfElement(Node node, String tag) { Element result = null; if (isElement(node)) { Element tmp = (Element) node; if (tag == null || tmp.getTagName().equals(tag)) { result = tmp; } } return result; } public static boolean isElement(Node node) { return node.getNodeType() == Node.ELEMENT_NODE; } }