001 import org.w3c.dom.Element; 002 import org.w3c.dom.Node; 003 004 /** 005 * 006 * ChildElementWalker provides a convenience class used to 007 * walk through all childs of an element that are elements 008 * and to skip text nodes that are assumed to be white space 009 * 010 * @author Udo Altmann 011 * @version 1.0 012 */ 013 public class ChildElementWalker { 014 015 Element parent; 016 Node current; 017 String tagname; 018 019 /** 020 * @param p parent element 021 * @param t null (every element is considered) or name of specific elements 022 * 023 */ 024 ChildElementWalker(Element p, String t) { 025 parent = p; 026 tagname = t; 027 reset(); 028 } 029 030 /** 031 * resets to first child 032 */ 033 public void reset() { 034 if( parent != null ) { 035 current = parent.getFirstChild(); 036 } else { 037 current = null; 038 } 039 } 040 041 042 /** 043 * 044 * @return next element found or null if there is no more element 045 */ 046 public Element getNextElement() { 047 Element rueckgabe = null; 048 while(current != null) { 049 if(current.getNodeType() == Node.ELEMENT_NODE) { 050 if(tagname == null) { 051 rueckgabe = (Element) current; 052 } else { 053 if(current.getNodeName().equals(tagname) || tagname.equals("*") ) { 054 rueckgabe = (Element) current; 055 } 056 } 057 } 058 current = current.getNextSibling(); 059 if(rueckgabe != null) { 060 return rueckgabe; 061 } 062 } 063 return null; 064 } 065 066 067 }