| java.lang.Object org.apache.xpath.CachedXPathAPI
CachedXPathAPI | public class CachedXPathAPI (Code) | | The methods in this class are convenience methods into the
low-level XPath API.
These functions tend to be a little slow, since a number of objects must be
created for each evaluation. A faster way is to precompile the
XPaths using the low-level API, and then just use the XPaths
over and over.
This is an alternative for the old XPathAPI class, which provided
static methods for the purpose but had the drawback of
instantiating a new XPathContext (and thus building a new DTMManager,
and new DTMs) each time it was called. XPathAPIObject instead retains
its context as long as the object persists, reusing the DTMs. This
does have a downside: if you've changed your source document, you should
obtain a new XPathAPIObject to continue searching it, since trying to use
the old DTMs will probably yield bad results or malfunction outright... and
the cached DTMs may consume memory until this object and its context are
returned to the heap. Essentially, it's the caller's responsibility to
decide when to discard the cache.
See Also: XPath Specification |
Field Summary | |
protected XPathContext | xpathSupport XPathContext, and thus the document model system (DTMs), persists through multiple
calls to this object. |
Method Summary | |
public XObject | eval(Node contextNode, String str) Evaluate XPath string to an XObject. | public XObject | eval(Node contextNode, String str, Node namespaceNode) Evaluate XPath string to an XObject. | public XObject | eval(Node contextNode, String str, PrefixResolver prefixResolver) Evaluate XPath string to an XObject.
XPath namespace prefixes are resolved from the namespaceNode.
The implementation of this is a little slow, since it creates
a number of objects each time it is called. | public XPathContext | getXPathContext() Returns the XPathSupport object used in this CachedXPathAPI
%REVIEW% I'm somewhat concerned about the loss of encapsulation
this causes, but the xml-security folks say they need it. | public NodeIterator | selectNodeIterator(Node contextNode, String str) Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the contextNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. | public NodeIterator | selectNodeIterator(Node contextNode, String str, Node namespaceNode) Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. | public NodeList | selectNodeList(Node contextNode, String str) Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the contextNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. | public NodeList | selectNodeList(Node contextNode, String str, Node namespaceNode) Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. | public Node | selectSingleNode(Node contextNode, String str) Use an XPath string to select a single node. | public Node | selectSingleNode(Node contextNode, String str, Node namespaceNode) Use an XPath string to select a single node.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. |
xpathSupport | protected XPathContext xpathSupport(Code) | | XPathContext, and thus the document model system (DTMs), persists through multiple
calls to this object. This is set in the constructor.
|
CachedXPathAPI | public CachedXPathAPI(CachedXPathAPI priorXPathAPI)(Code) | | This constructor shares its
XPathContext with a pre-existing
CachedXPathAPI . That allows sharing document models
(
org.apache.xml.dtm.DTM ) and previously established location
state.
Note that the original
CachedXPathAPI and the new one should
not be operated upon concurrently; we do not support multithreaded access
to a single
org.apache.xml.dtm.DTM at this time. Similarly,
any particular instance of
CachedXPathAPI must not be operated
upon by multiple threads without synchronization.
%REVIEW% Should this instead do a clone-and-reset on the XPathSupport object?
|
eval | public XObject eval(Node contextNode, String str, PrefixResolver prefixResolver) throws TransformerException(Code) | | Evaluate XPath string to an XObject.
XPath namespace prefixes are resolved from the namespaceNode.
The implementation of this is a little slow, since it creates
a number of objects each time it is called. This could be optimized
to keep the same objects around, but then thread-safety issues would arise.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: prefixResolver - Will be called if the parser encounters namespaceprefixes, to resolve the prefixes to URLs. An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null. See Also: org.apache.xpath.objects.XObject See Also: org.apache.xpath.objects.XNull See Also: org.apache.xpath.objects.XBoolean See Also: org.apache.xpath.objects.XNumber See Also: org.apache.xpath.objects.XString See Also: org.apache.xpath.objects.XRTreeFrag throws: TransformerException - |
getXPathContext | public XPathContext getXPathContext()(Code) | | Returns the XPathSupport object used in this CachedXPathAPI
%REVIEW% I'm somewhat concerned about the loss of encapsulation
this causes, but the xml-security folks say they need it.
|
selectNodeIterator | public NodeIterator selectNodeIterator(Node contextNode, String str) throws TransformerException(Code) | | Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the contextNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. A NodeIterator, should never be null. throws: TransformerException - |
selectNodeIterator | public NodeIterator selectNodeIterator(Node contextNode, String str, Node namespaceNode) throws TransformerException(Code) | | Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. A NodeIterator, should never be null. throws: TransformerException - |
selectNodeList | public NodeList selectNodeList(Node contextNode, String str) throws TransformerException(Code) | | Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the contextNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. A NodeIterator, should never be null. throws: TransformerException - |
selectNodeList | public NodeList selectNodeList(Node contextNode, String str, Node namespaceNode) throws TransformerException(Code) | | Use an XPath string to select a nodelist.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. A NodeIterator, should never be null. throws: TransformerException - |
selectSingleNode | public Node selectSingleNode(Node contextNode, String str) throws TransformerException(Code) | | Use an XPath string to select a single node. XPath namespace
prefixes are resolved from the context node, which may not
be what you want (see the next method).
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. The first node found that matches the XPath, or null. throws: TransformerException - |
selectSingleNode | public Node selectSingleNode(Node contextNode, String str, Node namespaceNode) throws TransformerException(Code) | | Use an XPath string to select a single node.
XPath namespace prefixes are resolved from the namespaceNode.
Parameters: contextNode - The node to start searching from. Parameters: str - A valid XPath string. Parameters: namespaceNode - The node from which prefixes in the XPath will be resolved to namespaces. The first node found that matches the XPath, or null. throws: TransformerException - |
|
|