Here you can find the source of getMatchingNodes(Node node, String[] nodePath, int cur, List
private static void getMatchingNodes(Node node, String[] nodePath, int cur, List<Node> res)
//package com.java2s; import org.w3c.dom.*; import java.util.List; import java.util.regex.Pattern; public class Main { private static void getMatchingNodes(Node node, Pattern[] nodePath, int cur, List<Node> res) { if (cur < 0 || cur >= nodePath.length) return; boolean last = (cur == nodePath.length - 1); Pattern pattern = nodePath[cur]; NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node c = children.item(i); if (pattern.matcher(c.getNodeName()).matches()) { if (last) { res.add(c);/*from w ww.j a v a 2 s . c o m*/ } else { getMatchingNodes(c, nodePath, cur + 1, res); } } } } private static void getMatchingNodes(Node node, String[] nodePath, int cur, List<Node> res) { if (cur < 0 || cur >= nodePath.length) return; boolean last = (cur == nodePath.length - 1); String name = nodePath[cur]; if (node.hasChildNodes()) { NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node c = children.item(i); if (name.equals(c.getNodeName())) { if (last) { res.add(c); } else { getMatchingNodes(c, nodePath, cur + 1, res); } } } } } }