org.dom4j.xpath
Class DefaultXPath

java.lang.Object
  extended byorg.dom4j.xpath.DefaultXPath
All Implemented Interfaces:
NodeFilter, Serializable, XPath

public class DefaultXPath
extends Object
implements XPath, NodeFilter, Serializable

Default implementation of XPathwhich uses the Jaxen project.

Author:
bob mcwhirter, James Strachan
See Also:
Serialized Form

Constructor Summary
DefaultXPath(String text)
          Construct an XPath
 
Method Summary
 boolean booleanValueOf(Object context)
          Retrieve a boolean-value interpretation of this XPath expression when evaluated against a given context.
 Object evaluate(Object context)
           evaluate evaluates an XPath expression and returns the result as an Object.
protected  Object getCompareValue(Node node)
          DOCUMENT ME!
 org.jaxen.FunctionContext getFunctionContext()
          DOCUMENT ME!
 org.jaxen.NamespaceContext getNamespaceContext()
          DOCUMENT ME!
 String getText()
          Retrieve the textual XPath string used to initialize this Object
 org.jaxen.VariableContext getVariableContext()
          DOCUMENT ME!
protected  void handleJaxenException(org.jaxen.JaxenException exception)
           
 boolean matches(Node node)
           matches returns true if the given node matches the XPath expression.
 Number numberValueOf(Object context)
           numberValueOf evaluates an XPath expression and returns the numeric value of the XPath expression if the XPath expression results is a number, or null if the result is not a number.
protected static org.jaxen.XPath parse(String text)
           
protected  void removeDuplicates(List list, Map sortValues)
          Removes items from the list which have duplicate values
 List selectNodes(Object context)
           selectNodes performs this XPath expression on the given Nodeor Listof Nodes instances appending all the results together into a single list.
 List selectNodes(Object context, XPath sortXPath)
           selectNodes evaluates the XPath expression on the given Nodeor Listof Nodes and returns the result as a List of Node s sorted by the sort XPath expression.
 List selectNodes(Object context, XPath sortXPath, boolean distinct)
           selectNodes evaluates the XPath expression on the given Nodeor Listof Nodes and returns the result as a List of Node s sorted by the sort XPath expression.
 Object selectObject(Object context)
           selectObject evaluates an XPath expression and returns the result as an Object.
 Node selectSingleNode(Object context)
           selectSingleNode evaluates this XPath expression on the given Nodeor Listof Nodes and returns the result as a single Node instance.
 void setFunctionContext(org.jaxen.FunctionContext functionContext)
          Sets the function context to be used when evaluating XPath expressions
 void setNamespaceContext(org.jaxen.NamespaceContext namespaceContext)
          Sets the namespace context to be used when evaluating XPath expressions
 void setNamespaceURIs(Map map)
           Sets the current NamespaceContext from a Map where the keys are the String namespace prefixes and the values are the namespace URIs.
protected  void setNSContext(Object context)
           
 void setVariableContext(org.jaxen.VariableContext variableContext)
          Sets the variable context to be used when evaluating XPath expressions
 void sort(List list)
           sort sorts the given List of Nodes using this XPath expression as a Comparator.
 void sort(List list, boolean distinct)
           sort sorts the given List of Nodes using this XPath expression as a Comparatorand optionally removing duplicates.
protected  void sort(List list, Map sortValues)
          Sorts the list based on the sortValues for each node
 String toString()
           
 String valueOf(Object context)
           valueOf evaluates this XPath expression and returns the textual representation of the results using the XPath string() function.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DefaultXPath

public DefaultXPath(String text)
             throws InvalidXPathException
Construct an XPath

Parameters:
text - DOCUMENT ME!
Throws:
InvalidXPathException - DOCUMENT ME!
Method Detail

toString

public String toString()

getText

public String getText()
Retrieve the textual XPath string used to initialize this Object

Specified by:
getText in interface XPath
Returns:
The XPath string

getFunctionContext

public org.jaxen.FunctionContext getFunctionContext()
Description copied from interface: XPath
DOCUMENT ME!

Specified by:
getFunctionContext in interface XPath
Returns:
the current function context

setFunctionContext

public void setFunctionContext(org.jaxen.FunctionContext functionContext)
Description copied from interface: XPath
Sets the function context to be used when evaluating XPath expressions

Specified by:
setFunctionContext in interface XPath
Parameters:
functionContext - DOCUMENT ME!

getNamespaceContext

public org.jaxen.NamespaceContext getNamespaceContext()
Description copied from interface: XPath
DOCUMENT ME!

Specified by:
getNamespaceContext in interface XPath
Returns:
the current namespace context

setNamespaceURIs

public void setNamespaceURIs(Map map)
Description copied from interface: XPath

Sets the current NamespaceContext from a Map where the keys are the String namespace prefixes and the values are the namespace URIs.

For example:

 Map uris = new HashMap();
 uris.put("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
 uris.put("m", "urn:xmethodsBabelFish");
 XPath xpath = document
         .createXPath("SOAP-ENV:Envelope/SOAP-ENV:Body/m:BabelFish");
 xpath.setNamespaceURIs(uris);
 Node babelfish = xpath.selectSingleNode(document);
 

Specified by:
setNamespaceURIs in interface XPath
Parameters:
map - the map containing the namespace mappings

setNamespaceContext

public void setNamespaceContext(org.jaxen.NamespaceContext namespaceContext)
Description copied from interface: XPath
Sets the namespace context to be used when evaluating XPath expressions

Specified by:
setNamespaceContext in interface XPath
Parameters:
namespaceContext - DOCUMENT ME!

getVariableContext

public org.jaxen.VariableContext getVariableContext()
Description copied from interface: XPath
DOCUMENT ME!

Specified by:
getVariableContext in interface XPath
Returns:
the current variable context

setVariableContext

public void setVariableContext(org.jaxen.VariableContext variableContext)
Description copied from interface: XPath
Sets the variable context to be used when evaluating XPath expressions

Specified by:
setVariableContext in interface XPath
Parameters:
variableContext - DOCUMENT ME!

evaluate

public Object evaluate(Object context)
Description copied from interface: XPath

evaluate evaluates an XPath expression and returns the result as an Object. The object returned can either be a List of Nodeinstances, a Nodeinstance, a String or a Numberinstance depending on the XPath expression.

Specified by:
evaluate in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
the value of the XPath expression as a Listof Node instances, a Nodeinstance, a Stringor a Numberinstance depending on the XPath expression.

selectObject

public Object selectObject(Object context)
Description copied from interface: XPath

selectObject evaluates an XPath expression and returns the result as an Object. The object returned can either be a List of Nodeinstances, a Nodeinstance, a String or a Numberinstance depending on the XPath expression.

Specified by:
selectObject in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
the value of the XPath expression as a Listof Node instances, a Nodeinstance, a Stringor a Numberinstance depending on the XPath expression.

selectNodes

public List selectNodes(Object context)
Description copied from interface: XPath

selectNodes performs this XPath expression on the given Nodeor Listof Nodes instances appending all the results together into a single list.

Specified by:
selectNodes in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
the results of all the XPath evaluations as a single list

selectNodes

public List selectNodes(Object context,
                        XPath sortXPath)
Description copied from interface: XPath

selectNodes evaluates the XPath expression on the given Nodeor Listof Nodes and returns the result as a List of Node s sorted by the sort XPath expression.

Specified by:
selectNodes in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
sortXPath - is the XPath expression to sort by
Returns:
a list of Node instances

selectNodes

public List selectNodes(Object context,
                        XPath sortXPath,
                        boolean distinct)
Description copied from interface: XPath

selectNodes evaluates the XPath expression on the given Nodeor Listof Nodes and returns the result as a List of Node s sorted by the sort XPath expression.

Specified by:
selectNodes in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
sortXPath - is the XPath expression to sort by
distinct - specifies whether or not duplicate values of the sort expression are allowed. If this parameter is true then only distinct sort expressions values are included in the result
Returns:
a list of Node instances

selectSingleNode

public Node selectSingleNode(Object context)
Description copied from interface: XPath

selectSingleNode evaluates this XPath expression on the given Nodeor Listof Nodes and returns the result as a single Node instance.

Specified by:
selectSingleNode in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
a single matching Node instance

valueOf

public String valueOf(Object context)
Description copied from interface: XPath

valueOf evaluates this XPath expression and returns the textual representation of the results using the XPath string() function.

Specified by:
valueOf in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
the string representation of the results of the XPath expression

numberValueOf

public Number numberValueOf(Object context)
Description copied from interface: XPath

numberValueOf evaluates an XPath expression and returns the numeric value of the XPath expression if the XPath expression results is a number, or null if the result is not a number.

Specified by:
numberValueOf in interface XPath
Parameters:
context - is either a node or a list of nodes on which to evalute the XPath
Returns:
the numeric result of the XPath expression or null if the result is not a number.

booleanValueOf

public boolean booleanValueOf(Object context)
Description copied from interface: XPath
Retrieve a boolean-value interpretation of this XPath expression when evaluated against a given context.

The boolean-value of the expression is determined per the boolean(..) core function as defined in the XPath specification. This means that an expression that selects zero nodes will return false, while an expression that selects one-or-more nodes will return true.

Specified by:
booleanValueOf in interface XPath
Parameters:
context - The node, nodeset or Context object for evaluation. This value can be null
Returns:
The boolean-value interpretation of this expression.

sort

public void sort(List list)

sort sorts the given List of Nodes using this XPath expression as a Comparator.

Specified by:
sort in interface XPath
Parameters:
list - is the list of Nodes to sort

sort

public void sort(List list,
                 boolean distinct)

sort sorts the given List of Nodes using this XPath expression as a Comparatorand optionally removing duplicates.

Specified by:
sort in interface XPath
Parameters:
list - is the list of Nodes to sort
distinct - if true then duplicate values (using the sortXPath for comparisions) will be removed from the List

matches

public boolean matches(Node node)
Description copied from interface: XPath

matches returns true if the given node matches the XPath expression. To be more precise when evaluating this XPath expression on the given node the result set must include the node.

Specified by:
matches in interface XPath
Parameters:
node - DOCUMENT ME!
Returns:
true if the given node matches this XPath expression

sort

protected void sort(List list,
                    Map sortValues)
Sorts the list based on the sortValues for each node

Parameters:
list - DOCUMENT ME!
sortValues - DOCUMENT ME!

removeDuplicates

protected void removeDuplicates(List list,
                                Map sortValues)
Removes items from the list which have duplicate values

Parameters:
list - DOCUMENT ME!
sortValues - DOCUMENT ME!

getCompareValue

protected Object getCompareValue(Node node)
DOCUMENT ME!

Parameters:
node - DOCUMENT ME!
Returns:
the node expression used for sorting comparisons

parse

protected static org.jaxen.XPath parse(String text)

setNSContext

protected void setNSContext(Object context)

handleJaxenException

protected void handleJaxenException(org.jaxen.JaxenException exception)
                             throws XPathException
Throws:
XPathException


Copyright © 2001-2005 MetaStuff Ltd.. All Rights Reserved.