| 
			 XML Iterator DP  | 
		
|---|
/**
 **************************************************************************
 * Name: LevelIterator
 * Description: This iterator traverses the tree by levels.
 *              Note that it could be replaced in the main program for 
 *              any other iterator conforming with AbstractIteratorIF,  
 *              without changing anything in the main program logic.
 **************************************************************************
 */
import org.w3c.dom.*;
import java.util.Vector;
public class LevelIterator implements AbstractIteratorIF {
    public boolean end() {
 		return (aux.size() == 0);
    }
    public void next() {
 	if(aux.size() > 0) {
current = (Node) aux.elementAt(0); aux.removeElementAt(0);
 	}
 	if (current.hasChildNodes()) {
NodeList nl = current.getChildNodes(); int size = nl.getLength(); for (int i = 0; i < size; i++) aux.addElement(nl.item(i));
     }
    }
    public Node getValue() {
 		return current;
    }
    public LevelIterator(Node c) {
 		current = c;
 		aux.addElement(current);
    }
    Node current;
    Vector aux = new Vector(); 
}