Methods Summary |
---|
public abstract boolean | getFeature(java.lang.String name)Get the state of the named feature.
Feature names are fully qualified {@link java.net.URI}s.
Implementations may define their own features.
An {@link XPathFactoryConfigurationException} is thrown if this XPathFactory or the XPath s
it creates cannot support the feature.
It is possible for an XPathFactory to expose a feature value but be unable to change its state.
|
public abstract boolean | isObjectModelSupported(java.lang.String objectModel)Is specified object model supported by this XPathFactory ?
|
public static final javax.xml.xpath.XPathFactory | newInstance()Get a new XPathFactory instance using the default object model,
{@link #DEFAULT_OBJECT_MODEL_URI},
the W3C DOM.
This method is functionally equivalent to:
newInstance(DEFAULT_OBJECT_MODEL_URI)
Since the implementation for the W3C DOM is always available, this method will never fail.
try {
return newInstance(DEFAULT_OBJECT_MODEL_URI);
} catch (XPathFactoryConfigurationException xpathFactoryConfigurationException) {
throw new RuntimeException(
"XPathFactory#newInstance() failed to create an XPathFactory for the default object model: "
+ DEFAULT_OBJECT_MODEL_URI
+ " with the XPathFactoryConfigurationException: "
+ xpathFactoryConfigurationException.toString()
);
}
|
public static final javax.xml.xpath.XPathFactory | newInstance(java.lang.String uri)Get a new XPathFactory instance using the specified object model.
To find a XPathFactory object,
this method looks the following places in the following order where "the class loader" refers to the context class loader:
-
If the system property {@link #DEFAULT_PROPERTY_NAME} + ":uri" is present,
where uri is the parameter to this method, then its value is read as a class name.
The method will try to create a new instance of this class by using the class loader,
and returns it if it is successfully created.
-
${java.home}/lib/jaxp.properties is read and the value associated with the key being the system property above is looked for.
If present, the value is processed just like above.
-
The class loader is asked for service provider provider-configuration files matching
javax.xml.xpath.XPathFactory
in the resource directory META-INF/services.
See the JAR File Specification for file format and parsing rules.
Each potential service provider is required to implement the method:
{@link #isObjectModelSupported(String objectModel)}
The first service provider found in class loader order that supports the specified object model is returned.
-
Platform default
XPathFactory is located in a platform specific way.
There must be a platform default XPathFactory for the W3C DOM, i.e. {@link #DEFAULT_OBJECT_MODEL_URI}.
If everything fails, an XPathFactoryConfigurationException will be thrown.
Tip for Trouble-shooting:
See {@link java.util.Properties#load(java.io.InputStream)} for exactly how a property file is parsed.
In particular, colons ':' need to be escaped in a property file, so make sure the URIs are properly escaped in it.
For example:
http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
if (uri == null) {
throw new NullPointerException(
"XPathFactory#newInstance(String uri) cannot be called with uri == null"
);
}
if (uri.length() == 0) {
throw new IllegalArgumentException(
"XPathFactory#newInstance(String uri) cannot be called with uri == \"\""
);
}
ClassLoader classLoader = ss.getContextClassLoader();
if (classLoader == null) {
//use the current class loader
classLoader = XPathFactory.class.getClassLoader();
}
XPathFactory xpathFactory = new XPathFactoryFinder(classLoader).newFactory(uri);
if (xpathFactory == null) {
throw new XPathFactoryConfigurationException(
"No XPathFctory implementation found for the object model: "
+ uri
);
}
return xpathFactory;
|
public abstract javax.xml.xpath.XPath | newXPath()Return a new XPath using the underlying object
model determined when the XPathFactory was instantiated.
|
public abstract void | setFeature(java.lang.String name, boolean value)Set a feature for this XPathFactory and XPath s created by this factory.
Feature names are fully qualified {@link java.net.URI}s.
Implementations may define their own features.
An {@link XPathFactoryConfigurationException} is thrown if this XPathFactory or the XPath s
it creates cannot support the feature.
It is possible for an XPathFactory to expose a feature value but be unable to change its state.
All implementations are required to support the {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature.
When the feature is true , any reference to an external function is an error.
Under these conditions, the implementation must not call the {@link XPathFunctionResolver}
and must throw an {@link XPathFunctionException}.
|
public abstract void | setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver resolver)Establish a default function resolver.
Any XPath objects constructed from this factory will use
the specified resolver by default.
A NullPointerException is thrown if resolver is null .
|
public abstract void | setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver resolver)Establish a default variable resolver.
Any XPath objects constructed from this factory will use
the specified resolver by default.
A NullPointerException is thrown if resolver is null .
|