Class PrecedingAxisIterator
- java.lang.Object
-
- org.jaxen.util.PrecedingAxisIterator
-
- All Implemented Interfaces:
java.util.Iterator
public class PrecedingAxisIterator extends java.lang.Object implements java.util.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: thepreceding
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:
- 2.0.0
-
-
Constructor Summary
Constructors Constructor Description PrecedingAxisIterator(java.lang.Object contextNode, Navigator navigator)
Create a newpreceding
axis iterator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
hasNext()
Returns true if there are any preceding nodes remaining; false otherwise.java.lang.Object
next()
Returns the next preceding node.void
remove()
This operation is not supported.
-
-
-
Constructor Detail
-
PrecedingAxisIterator
public PrecedingAxisIterator(java.lang.Object contextNode, Navigator navigator) throws UnsupportedAxisException
Create a newpreceding
axis iterator.- Parameters:
contextNode
- the node to start fromnavigator
- the object model specific navigator- Throws:
UnsupportedAxisException
-
-
Method Detail
-
hasNext
public boolean hasNext()
Returns true if there are any preceding nodes remaining; false otherwise.- Specified by:
hasNext
in interfacejava.util.Iterator
- Returns:
- true if any preceding nodes remain; false otherwise
- See Also:
Iterator.hasNext()
-
next
public java.lang.Object next() throws java.util.NoSuchElementException
Returns the next preceding node.- Specified by:
next
in interfacejava.util.Iterator
- Returns:
- the next preceding node
- Throws:
java.util.NoSuchElementException
- if no preceding nodes remain- See Also:
Iterator.next()
-
remove
public void remove() throws java.lang.UnsupportedOperationException
This operation is not supported.- Specified by:
remove
in interfacejava.util.Iterator
- Throws:
java.lang.UnsupportedOperationException
- always
-
-