Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jaxen.dom
Class DocumentNavigator

    java.lang.Object
      org.jaxen.DefaultNavigator
          org.jaxen.dom.DocumentNavigator

All Implemented Interfaces:
  Navigator, Serializable

public class DocumentNavigator
extends DefaultNavigator

Interface for navigating around the W3C DOM Level 2 object model.

This class is not intended for direct usage, but is used by the Jaxen engine during evaluation.

This class implements the `DefaultNavigator` interface for the Jaxen XPath library. This adapter allows the Jaxen library to be used to execute XPath queries against any object tree that implements the DOM level 2 interfaces.

Note: DOM level 2 does not include a node representing an XPath namespace node. This navigator will return namespace nodes as instances of the custom `NamespaceNode` class, and users will have to check result sets to locate and isolate these.

Author:
  David Megginson, James Strachan
See Also:
  `XPath`, `NamespaceNode`, Serialized Form

Constructor Summary
`DocumentNavigator()` Default constructor.

Method Summary
`Iterator` | `getAttributeAxisIterator(Object contextNode)` Get an iterator over all attributes.
`String` | `getAttributeName(Object attribute)` Get the local name of an attribute.
`String` | `getAttributeNamespaceUri(Object attribute)` Get the namespace URI of an attribute.
`String` | `getAttributeQName(Object attribute)` Get the qualified name of an attribute.
`String` | `getAttributeStringValue(Object object)` Get the string value of an attribute node.
`Iterator` | `getChildAxisIterator(Object contextNode)` Get an iterator over all of this node's children.
`String` | `getCommentStringValue(Object object)` Get the string value of a comment node.
`Object` | `getDocument(String uri)` Use JAXP to load a namespace aware document from a given URI.
`Object` | `getDocumentNode(Object contextNode)` Get the top-level document node.
`Object` | `getElementById(Object object, String elementId)` Returns the element whose ID is given by elementId.
`String` | `getElementName(Object element)` Get the local name of an element.
`String` | `getElementNamespaceUri(Object element)` Get the namespace URI of an element.
`String` | `getElementQName(Object element)` Get the qualified name of an element.
`String` | `getElementStringValue(Object object)` Get the string value of an element node.
`Iterator` | `getFollowingAxisIterator(Object contextNode)` Get an iterator over all following nodes, depth-first.
`Iterator` | `getFollowingSiblingAxisIterator(Object contextNode)` Get an iterator over all following siblings.
`static Navigator` | `getInstance()` Get a constant DocumentNavigator for efficiency.
`Iterator` | `getNamespaceAxisIterator(Object contextNode)` Get an iterator over all declared namespaces.
`String` | `getNamespacePrefix(Object object)` Get the prefix value of a Namespace node.
`String` | `getNamespaceStringValue(Object object)` Get the string value of a namespace node.
`Iterator` | `getParentAxisIterator(Object contextNode)` Get a (single-member) iterator over this node's parent.
`Object` | `getParentNode(Object o)` Return the XPath parent of this DOM node.
`Iterator` | `getPrecedingSiblingAxisIterator(Object contextNode)` Get an iterator over all preceding siblings.
`String` | `getProcessingInstructionData(Object obj)` Get the data of a processing instruction node.
`String` | `getProcessingInstructionTarget(Object obj)` Get the target of a processing instruction node.
`String` | `getTextStringValue(Object object)` Get the string value of text.
`boolean` | `isAttribute(Object object)` Test if a node is an attribute.
`boolean` | `isComment(Object object)` Test if a node is a comment.
`boolean` | `isDocument(Object object)` Test if a node is a top-level document.
`boolean` | `isElement(Object object)` Test if a node is an element.
`boolean` | `isNamespace(Object object)` Test if a node is a namespace.
`boolean` | `isProcessingInstruction(Object object)` Test if a node is a processing instruction.
`boolean` | `isText(Object object)` Test if a node is plain text.
`XPath` | `parseXPath(String xpath)` Returns a parsed form of the given XPath string, which will be suitable for queries on DOM documents.
`String` | `translateNamespacePrefixToUri(String prefix, Object element)` Translate a namespace prefix to a URI.

Methods inherited from class org.jaxen.DefaultNavigator
`getAncestorAxisIterator, getAncestorOrSelfAxisIterator, getDescendantAxisIterator, getDescendantOrSelfAxisIterator, getNodeType, getPrecedingAxisIterator, getSelfAxisIterator`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### DocumentNavigator

    public DocumentNavigator()

  Default constructor.

Method Detail

### getInstance

    public static Navigator getInstance()

  Get a constant DocumentNavigator for efficiency.

  Returns:
    a constant instance of a DocumentNavigator.

### getChildAxisIterator

    public Iterator getChildAxisIterator(Object contextNode)

  Get an iterator over all of this node's children.

  Specified by:
    `getChildAxisIterator` in interface `Navigator`
  Overrides:
    `getChildAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the child axis.
  Returns:
    a possibly-empty iterator (not null)

### getParentAxisIterator

    public Iterator getParentAxisIterator(Object contextNode)

  Get a (single-member) iterator over this node's parent.

  Specified by:
    `getParentAxisIterator` in interface `Navigator`
  Overrides:
    `getParentAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the parent axis
  Returns:
    a possibly-empty iterator (not null)

### getParentNode

    public Object getParentNode(Object o)

  Return the XPath parent of this DOM node. XPath has slightly different definition of parent than DOM does. In particular, the parent of an attribute is not null.

  Specified by:
    `getParentNode` in interface `Navigator`
  Overrides:
    `getParentNode` in class `DefaultNavigator`
  Parameters:
    `o` -
  Returns:
    the parent of the specified node; or null if the node does not have a parent

### getFollowingSiblingAxisIterator

    public Iterator getFollowingSiblingAxisIterator(Object contextNode)

  Get an iterator over all following siblings.

  Specified by:
    `getFollowingSiblingAxisIterator` in interface `Navigator`
  Overrides:
    `getFollowingSiblingAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the sibling iterator
  Returns:
    a possibly-empty iterator (not null)

### getPrecedingSiblingAxisIterator

    public Iterator getPrecedingSiblingAxisIterator(Object contextNode)

  Get an iterator over all preceding siblings.

  Specified by:
    `getPrecedingSiblingAxisIterator` in interface `Navigator`
  Overrides:
    `getPrecedingSiblingAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the preceding sibling axis
  Returns:
    a possibly-empty iterator (not null)

### getFollowingAxisIterator

    public Iterator getFollowingAxisIterator(Object contextNode)

  Get an iterator over all following nodes, depth-first.

  Specified by:
    `getFollowingAxisIterator` in interface `Navigator`
  Overrides:
    `getFollowingAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the following axis
  Returns:
    a possibly-empty iterator (not null)

### getAttributeAxisIterator

    public Iterator getAttributeAxisIterator(Object contextNode)

  Get an iterator over all attributes.

  Specified by:
    `getAttributeAxisIterator` in interface `Navigator`
  Overrides:
    `getAttributeAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the attribute axis
  Returns:
    a possibly-empty iterator (not null)

### getNamespaceAxisIterator

    public Iterator getNamespaceAxisIterator(Object contextNode)

  Get an iterator over all declared namespaces.

  Note: this iterator is not live: it takes a snapshot and that snapshot remains static during the life of the iterator (i.e. it won't reflect subsequent changes to the DOM).

  Specified by:
    `getNamespaceAxisIterator` in interface `Navigator`
  Overrides:
    `getNamespaceAxisIterator` in class `DefaultNavigator`
  Parameters:
    `contextNode` - the context node for the namespace axis
  Returns:
    a possibly-empty iterator (not null)

### parseXPath

    public XPath parseXPath(String xpath)
                     throws SAXPathException

  Returns a parsed form of the given XPath string, which will be suitable for queries on DOM documents.

  Parameters:
    `xpath` - the XPath expression
  Returns:
    a parsed form of the given XPath string
  Throws:
    `SAXPathException` - if the string is syntactically incorrect
  See Also:
    `XPath`

### getDocumentNode

    public Object getDocumentNode(Object contextNode)

  Get the top-level document node.

  Specified by:
    `getDocumentNode` in interface `Navigator`
  Overrides:
    `getDocumentNode` in class `DefaultNavigator`
  Parameters:
    `contextNode` - any node in the document
  Returns:
    the root node

### getElementNamespaceUri

    public String getElementNamespaceUri(Object element)

  Get the namespace URI of an element.

  Parameters:
    `element` - the target node
  Returns:
    a string (possibly empty) if the node is an element, and null otherwise

### getElementName

    public String getElementName(Object element)

  Get the local name of an element.

  Parameters:
    `element` - the target node
  Returns:
    a string representing the unqualified local name if the node is an element, or null otherwise

### getElementQName

    public String getElementQName(Object element)

  Get the qualified name of an element.

  Parameters:
    `element` - the target node
  Returns:
    a string representing the qualified (i.e. possibly prefixed) name if the node is an element, or null otherwise

### getAttributeNamespaceUri

    public String getAttributeNamespaceUri(Object attribute)

  Get the namespace URI of an attribute.

  Parameters:
    `attribute` - the target node
  Returns:
    the namespace name of the specified node

### getAttributeName

    public String getAttributeName(Object attribute)

  Get the local name of an attribute.

  Parameters:
    `attribute` - the target node
  Returns:
    a string representing the unqualified local name if the node is an attribute, or null otherwise

### getAttributeQName

    public String getAttributeQName(Object attribute)

  Get the qualified name of an attribute.

  Parameters:
    `attribute` - the target node
  Returns:
    a string representing the qualified (i.e. possibly prefixed) name if the node is an attribute, or null otherwise

### isDocument

    public boolean isDocument(Object object)

  Test if a node is a top-level document.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is the document root, false otherwise

### isNamespace

    public boolean isNamespace(Object object)

  Test if a node is a namespace.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is a namespace, false otherwise

### isElement

    public boolean isElement(Object object)

  Test if a node is an element.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is an element, false otherwise

### isAttribute

    public boolean isAttribute(Object object)

  Test if a node is an attribute. `xmlns` and `xmlns:pre` attributes do not count as attributes for the purposes of XPath.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is an attribute, false otherwise

### isComment

    public boolean isComment(Object object)

  Test if a node is a comment.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is a comment, false otherwise

### isText

    public boolean isText(Object object)

  Test if a node is plain text.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is a text node, false otherwise

### isProcessingInstruction

    public boolean isProcessingInstruction(Object object)

  Test if a node is a processing instruction.

  Parameters:
    `object` - the target node
  Returns:
    true if the node is a processing instruction, false otherwise

### getElementStringValue

    public String getElementStringValue(Object object)

  Get the string value of an element node.

  Parameters:
    `object` - the target node
  Returns:
    the text inside the node and its descendants if the node is an element, null otherwise

### getAttributeStringValue

    public String getAttributeStringValue(Object object)

  Get the string value of an attribute node.

  Parameters:
    `object` - the target node
  Returns:
    the text of the attribute value if the node is an attribute, null otherwise

### getTextStringValue

    public String getTextStringValue(Object object)

  Get the string value of text.

  Parameters:
    `object` - the target node
  Returns:
    the string of text if the node is text, null otherwise

### getCommentStringValue

    public String getCommentStringValue(Object object)

  Get the string value of a comment node.

  Parameters:
    `object` - the target node
  Returns:
    the text of the comment if the node is a comment, null otherwise

### getNamespaceStringValue

    public String getNamespaceStringValue(Object object)

  Get the string value of a namespace node.

  Parameters:
    `object` - the target node
  Returns:
    the namespace URI as a (possibly empty) string if the node is a namespace node, null otherwise

### getNamespacePrefix

    public String getNamespacePrefix(Object object)

  Get the prefix value of a Namespace node.

  Parameters:
    `object` - the target node
  Returns:
    the Namespace prefix a (possibly empty) string if the node is a namespace node, null otherwise

### translateNamespacePrefixToUri

    public String translateNamespacePrefixToUri(String prefix,
                                                Object element)

  Translate a namespace prefix to a URI.

  Specified by:
    `translateNamespacePrefixToUri` in interface `Navigator`
  Overrides:
    `translateNamespacePrefixToUri` in class `DefaultNavigator`
  Parameters:
    `prefix` - the namespace prefix
    `element` - the namespace context
  Returns:
    the namesapce URI bound to the prefix in the scope of `element`; null if the porefix is not bound

### getDocument

    public Object getDocument(String uri)
                       throws FunctionCallException

  Use JAXP to load a namespace aware document from a given URI.

  Specified by:
    `getDocument` in interface `Navigator`
  Overrides:
    `getDocument` in class `DefaultNavigator`
  Parameters:
    `uri` - is the URI of the document to load
  Returns:
    the new W3C DOM Level 2 Document instance
  Throws:
    `FunctionCallException` - containing a nested exception if a problem occurs trying to parse the given document

### getProcessingInstructionTarget

    public String getProcessingInstructionTarget(Object obj)

  Get the target of a processing instruction node.

  Specified by:
    `getProcessingInstructionTarget` in interface `Navigator`
  Overrides:
    `getProcessingInstructionTarget` in class `DefaultNavigator`
  Parameters:
    `obj` - the processing instruction
  Returns:
    the target of the processing instruction

### getProcessingInstructionData

    public String getProcessingInstructionData(Object obj)

  Get the data of a processing instruction node.

  Specified by:
    `getProcessingInstructionData` in interface `Navigator`
  Overrides:
    `getProcessingInstructionData` in class `DefaultNavigator`
  Parameters:
    `obj` - the processing instruction
  Returns:
    the target of the processing instruction

### getElementById

    public Object getElementById(Object object,
                                 String elementId)

  Returns the element whose ID is given by elementId. If no such element exists, returns null. Attributes with the name "ID" are not of type ID unless so defined. Attribute types are only known if when the parser understands DTD's or schemas that declare attributes of type ID. When JAXP is used, you must call `setValidating(true)` on the DocumentBuilderFactory.

  Specified by:
    `getElementById` in interface `Navigator`
  Overrides:
    `getElementById` in class `DefaultNavigator`
  Parameters:
    `object` - a node from the document in which to look for the id
    `elementId` - id to look for
  Returns:
    element whose ID is given by elementId, or null if no such element exists in the document or if the implementation does not know about attribute types
  See Also:
    `DocumentBuilderFactory`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2005 Codehaus. All Rights Reserved.