code: public static Elements findElementsByTag(Element element, String ... tags) {
  		List<Element> results = new ArrayList<Element>();
  		
  		Set<String> tagSet = new HashSet<String>();
  		for(String tag : tags) 
  			tagSet.add(tag.toLowerCase());
  		filterElementsByTag(results, element, tagSet);
  		return new Elements(results);
  	}
  	
  	private static void filterElementsByTag(List<Element> results, Element element, Set<String> tagSet) {
  		if(tagSet.contains(element.tag().getName().toLowerCase())) 
  			results.add(element);
  		
  		for(Element child : element.children())
  			filterElementsByTag(results, child, tagSet);
  	}
  
  	/** Returns the first element found with the given tag (or tag sequence separated by '/') or null. */
  	public static Element findFirstByTag(Element element, String tag) {
  		return findFirstByTag(element, tag.split("/"), 0);
  	}
  	
  	private static Element findFirstByTag(Element current, String [] tags, int index) {
  		if(index < tags.length) {
  			Elements elements = current.getElementsByTag(tags[index]);
  			for(Element element : elements) {
  				Element result = findFirstByTag(element, tags, index + 1);
  				if(result != null)
  					return result;
  			}
  			return null;
  		}
  		else
  			return current;
  	}
      
  }
docs: Returns the all elements matching any of the given tags (case-insensitive).