public Event next()

in testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/DOMTraverser.java [56:122]


    public Event next() {
        while (true) {
            boolean visited;
            if (node == null) {
                node = root;
                visited = false;
            } else if (descend) {
                Node firstChild = node.getFirstChild();
                if (firstChild != null) {
                    node = firstChild;
                    visited = false;
                } else {
                    visited = true;
                }
            } else {
                Node nextSibling = node.getNextSibling();
                if (node == root) {
                    return null;
                } else if (nextSibling != null) {
                    node = nextSibling;
                    visited = false;
                } else {
                    node = node.getParentNode();
                    visited = true;
                }
            }
            switch (node.getNodeType()) {
                case Node.DOCUMENT_NODE:
                    return null;
                case Node.DOCUMENT_TYPE_NODE:
                    descend = false;
                    return Event.DOCUMENT_TYPE;
                case Node.ELEMENT_NODE:
                    if (!visited) {
                        descend = true;
                        return Event.START_ELEMENT;
                    } else {
                        descend = false;
                        return Event.END_ELEMENT;
                    }
                case Node.TEXT_NODE:
                    descend = false;
                    return dom3 && ((Text) node).isElementContentWhitespace()
                            ? Event.WHITESPACE
                            : Event.TEXT;
                case Node.ENTITY_REFERENCE_NODE:
                    if (expandEntityReferences) {
                        descend = !visited;
                        break;
                    } else {
                        descend = false;
                        return Event.ENTITY_REFERENCE;
                    }
                case Node.COMMENT_NODE:
                    descend = false;
                    return Event.COMMENT;
                case Node.CDATA_SECTION_NODE:
                    descend = false;
                    return Event.CDATA_SECTION;
                case Node.PROCESSING_INSTRUCTION_NODE:
                    descend = false;
                    return Event.PROCESSING_INSTRUCTION;
                default:
                    throw new IllegalStateException();
            }
        }
    }