Class PrecedingAxisIterator
- All Implemented Interfaces:
Iterator
Represents the XPath preceding
axis.
The "preceding
axis contains all nodes in the same document as the context
node that are before the context node in document order, excluding any ancestors
and excluding attribute nodes and namespace nodes."
This implementation of 'preceding
' works like so:
the preceding
axis includes preceding siblings of this node and
their descendants. Also, for each ancestor node of this node, it includes
all preceding siblings of that ancestor, and their descendants. Finally, it
includes the ancestor nodes themselves.
The reversed descendant-or-self
axes that are required are calculated using a
stack of reversed 'child-or-self' axes. When asked for a node, it is always taken
from a child-or-self axis. If it was the last node on that axis, the node is returned.
Otherwise, this axis is pushed on the stack, and the process is repeated with the child-or-self
of the node. Eventually this recurses down to the last descendant of any node, then works
back up to the root.
Most object models could provide a faster implementation of the reversed 'children-or-self' used here.
- Version:
- 1.2b12
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Iterator
private ListIterator
private Navigator
private Iterator
private ArrayList
-
Constructor Summary
ConstructorsConstructorDescriptionPrecedingAxisIterator
(Object contextNode, Navigator navigator) Create a newpreceding
axis iterator. -
Method Summary
Modifier and TypeMethodDescriptionprivate ListIterator
childrenOrSelf
(Object node) boolean
hasNext()
Returns true if there are any preceding nodes remaining; false otherwise.next()
Returns the next preceding node.void
remove()
This operation is not supported.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
ancestorOrSelf
-
precedingSibling
-
childrenOrSelf
-
stack
-
-
Constructor Details
-
Method Details
-
hasNext
public boolean hasNext()Returns true if there are any preceding nodes remaining; false otherwise. -
childrenOrSelf
-
next
Returns the next preceding node.- Specified by:
next
in interfaceIterator
- Returns:
- the next preceding node
- Throws:
NoSuchElementException
- if no preceding nodes remain- See Also:
-
remove
This operation is not supported.- Specified by:
remove
in interfaceIterator
- Throws:
UnsupportedOperationException
- always
-