XML Iterator DP

  

You want to use iterators for DOM for all kinds of traversals: pre-order, post-order, in-order, etc.





/**
 **************************************************************************
 * 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(); 
 }