Class CachedXPathAPI
public class CachedXPathAPI extends Object
- See Also:
- XPath Specification
-
Field Summary
Fields Modifier and Type Field Description protected XPathContextxpathSupportXPathContext, and thus the document model system (DTMs), persists through multiple calls to this object. -
Constructor Summary
Constructors Constructor Description CachedXPathAPI()Default constructor.CachedXPathAPI(CachedXPathAPI priorXPathAPI)This constructor shares itsXPathContextwith a pre-existingCachedXPathAPI. -
Method Summary
Modifier and Type Method Description XObjecteval(Node contextNode, String str)Evaluate XPath string to an XObject.XObjecteval(Node contextNode, String str, PrefixResolver prefixResolver)Evaluate XPath string to an XObject.XObjecteval(Node contextNode, String str, Node namespaceNode)Evaluate XPath string to an XObject.XPathContextgetXPathContext()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.NodeIteratorselectNodeIterator(Node contextNode, String str)Use an XPath string to select a nodelist.NodeIteratorselectNodeIterator(Node contextNode, String str, Node namespaceNode)Use an XPath string to select a nodelist.NodeListselectNodeList(Node contextNode, String str)Use an XPath string to select a nodelist.NodeListselectNodeList(Node contextNode, String str, Node namespaceNode)Use an XPath string to select a nodelist.NodeselectSingleNode(Node contextNode, String str)Use an XPath string to select a single node.NodeselectSingleNode(Node contextNode, String str, Node namespaceNode)Use an XPath string to select a single node.
-
Field Details
-
xpathSupport
XPathContext, and thus the document model system (DTMs), persists through multiple calls to this object. This is set in the constructor.
-
-
Constructor Details
-
CachedXPathAPI
public CachedXPathAPI()Default constructor. Establishes its own
XPathContext, and hence its ownDTMManager. Good choice for simple uses.Note that any particular instance of
CachedXPathAPImust not be operated upon by multiple threads without synchronization; we do not currently support multithreaded access to a singleDTM. -
CachedXPathAPI
This constructor shares its
XPathContextwith a pre-existingCachedXPathAPI. That allows sharing document models (DTM) and previously established location state.Note that the original
CachedXPathAPIand the new one should not be operated upon concurrently; we do not support multithreaded access to a singleDTMat this time. Similarly, any particular instance ofCachedXPathAPImust not be operated upon by multiple threads without synchronization.%REVIEW% Should this instead do a clone-and-reset on the XPathSupport object?
-
-
Method Details
-
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. -
selectSingleNode
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.str- A valid XPath string.- Returns:
- The first node found that matches the XPath, or null.
- Throws:
TransformerException
-
selectSingleNode
public Node selectSingleNode(Node contextNode, String str, Node namespaceNode) throws TransformerExceptionUse an XPath string to select a single node. XPath namespace prefixes are resolved from the namespaceNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.namespaceNode- The node from which prefixes in the XPath will be resolved to namespaces.- Returns:
- The first node found that matches the XPath, or null.
- Throws:
TransformerException
-
selectNodeIterator
Use an XPath string to select a nodelist. XPath namespace prefixes are resolved from the contextNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.- Returns:
- A NodeIterator, should never be null.
- Throws:
TransformerException
-
selectNodeIterator
public NodeIterator selectNodeIterator(Node contextNode, String str, Node namespaceNode) throws TransformerExceptionUse an XPath string to select a nodelist. XPath namespace prefixes are resolved from the namespaceNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.namespaceNode- The node from which prefixes in the XPath will be resolved to namespaces.- Returns:
- A NodeIterator, should never be null.
- Throws:
TransformerException
-
selectNodeList
Use an XPath string to select a nodelist. XPath namespace prefixes are resolved from the contextNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.- Returns:
- A NodeIterator, should never be null.
- Throws:
TransformerException
-
selectNodeList
public NodeList selectNodeList(Node contextNode, String str, Node namespaceNode) throws TransformerExceptionUse an XPath string to select a nodelist. XPath namespace prefixes are resolved from the namespaceNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.namespaceNode- The node from which prefixes in the XPath will be resolved to namespaces.- Returns:
- A NodeIterator, should never be null.
- Throws:
TransformerException
-
eval
Evaluate XPath string to an XObject. Using this method, XPath namespace prefixes will be resolved from the namespaceNode.- Parameters:
contextNode- The node to start searching from.str- A valid XPath string.- Returns:
- An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
- Throws:
TransformerException- See Also:
XObject,XNull,XBoolean,XNumber,XString,XRTreeFrag
-
eval
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.str- A valid XPath string.namespaceNode- The node from which prefixes in the XPath will be resolved to namespaces.- Returns:
- An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
- Throws:
TransformerException- See Also:
XObject,XNull,XBoolean,XNumber,XString,XRTreeFrag
-
eval
public XObject eval(Node contextNode, String str, PrefixResolver prefixResolver) throws TransformerExceptionEvaluate 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.str- A valid XPath string.prefixResolver- Will be called if the parser encounters namespace prefixes, to resolve the prefixes to URLs.- Returns:
- An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
- Throws:
TransformerException- See Also:
XObject,XNull,XBoolean,XNumber,XString,XRTreeFrag
-