Here you can find the source of getElementsByTagNames(Node node, String... tagName)
public static List<Element> getElementsByTagNames(Node node, String... tagName)
//package com.java2s; /*/*from w w w.j av a 2s . com*/ * JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.ArrayList; import java.util.List; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Main { public static List<Element> getElementsByTagNames(Node node, String... tagName) { List<Element> nds = new ArrayList<Element>(); if (tagName.length == 0) tagName = new String[] { "" }; if (node.getNodeType() == Node.ELEMENT_NODE) { Element doc = (Element) node; for (String elementName : tagName) { nds.addAll(toElementList(doc.getElementsByTagName(elementName))); } } else if (node instanceof Document) { Document doc = ((Document) node); for (String elementName : tagName) { nds.addAll(toElementList(doc.getElementsByTagName(elementName))); } } else if (node instanceof DocumentFragment) { Document doc = ((DocumentFragment) node).getOwnerDocument(); for (String elementName : tagName) { nds.addAll(toElementList(doc.getElementsByTagName(elementName))); } } else { throw new IllegalArgumentException("a node who doesn't support getElementsByTagName operation."); } return nds; } public static List<Element> toElementList(NodeList nds) { List<Element> list = new ArrayList<Element>(); for (int i = 0; i < nds.getLength(); i++) { Node child = nds.item(i); if (child.getNodeType() == Node.ELEMENT_NODE) { list.add((Element) child); } } return list; } }