1 19 20 package org.netbeans.test.xml.schema.core.lib.dom.parser; 21 import java.util.Collection ; 22 import java.util.Iterator ; 23 import java.util.LinkedList ; 24 import java.util.TreeMap ; 25 import org.w3c.dom.Node ; 26 27 31 public class NodeIterator { 32 private Iterator m_iterator; 33 private LinkedList <Node > m_trace = new LinkedList <Node >(); 34 35 36 public NodeIterator(TreeMap <String , Node > map) { 37 Collection c = map.values(); 38 m_iterator = c.iterator(); 39 } 40 41 public Node next() { 42 boolean bSeekChildren = true; 43 44 while (true) { 45 if (m_trace.size() == 0) { 46 Node node = null; 47 if (m_iterator.hasNext()) { 48 node = (Node ) m_iterator.next(); 49 if (node != null) { 50 m_trace.add(node); 51 } 52 } 53 return node; 54 } else { 55 Node node = m_trace.getLast(); 56 Node nextNode = null; 57 if (node.hasChildNodes() && bSeekChildren) { 58 nextNode = node.getFirstChild(); 59 m_trace.add(nextNode); 60 } else { 61 if (m_trace.size() > 1) { 62 nextNode = node.getNextSibling(); 63 } 64 m_trace.removeLast(); 65 if (nextNode != null) { 66 bSeekChildren = true; 67 m_trace.add(nextNode); 68 } else { 69 bSeekChildren = false; 70 continue; 71 } 72 } 73 74 return nextNode; 75 } 76 } 77 } 78 } 79 | Popular Tags |