XPathFactory (Java SE 9 & JDK 9 ) (original) (raw)
Field Detail
* #### DEFAULT\_PROPERTY\_NAME
public static final [String](../../../java/lang/String.html "class in java.lang") DEFAULT_PROPERTY_NAME
The default property name according to the JAXP spec.
See Also:
[Constant Field Values](../../../constant-values.html#javax.xml.xpath.XPathFactory.DEFAULT%5FPROPERTY%5FNAME)
* #### DEFAULT\_OBJECT\_MODEL\_URI
public static final [String](../../../java/lang/String.html "class in java.lang") DEFAULT_OBJECT_MODEL_URI
Default Object Model URI.
See Also:
[Constant Field Values](../../../constant-values.html#javax.xml.xpath.XPathFactory.DEFAULT%5FOBJECT%5FMODEL%5FURI)
Constructor Detail
* #### XPathFactory
protected XPathFactory()
Method Detail
* #### newDefaultInstance
public static [XPathFactory](../../../javax/xml/xpath/XPathFactory.html "class in javax.xml.xpath") newDefaultInstance()
Creates a new instance of the `XPathFactory` builtin system-default implementation.
Implementation Requirements:
The `XPathFactory` builtin system-default implementation is only required to support the[default object model](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FOBJECT%5FMODEL%5FURI), the[W3C DOM](../../../org/w3c/dom/package-summary.html), but may support additional object models.
Returns:
A new instance of the `XPathFactory` builtin system-default implementation.
Since:
9
* #### newInstance
public static [XPathFactory](../../../javax/xml/xpath/XPathFactory.html "class in javax.xml.xpath") newInstance()
Get a new `XPathFactory` instance using the default object model,[DEFAULT\_OBJECT\_MODEL\_URI](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FOBJECT%5FMODEL%5FURI), 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.
Returns:
Instance of an `XPathFactory`.
Throws:
`[RuntimeException](../../../java/lang/RuntimeException.html "class in java.lang")` \- When there is a failure in creating an`XPathFactory` for the default object model.
* #### newInstance
public static [XPathFactory](../../../javax/xml/xpath/XPathFactory.html "class in javax.xml.xpath") newInstance([String](../../../java/lang/String.html "class in java.lang") uri)
throws [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")
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:
1. If the system property [DEFAULT\_PROPERTY\_NAME](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FPROPERTY%5FNAME) \+ ":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.
2. Use the configuration file "jaxp.properties". The file is in standard[Properties](../../../java/util/Properties.html "class in java.util") format and typically located in the conf directory of the Java installation. It contains the fully qualified name of the implementation class with the key being the system property defined above.
The jaxp.properties file is read only once by the JAXP implementation and its values are then cached for future use. If the file does not exist when the first attempt is made to read from it, no further attempts are made to check for its existence. It is not possible to change the value of any property in jaxp.properties after it has been read for the first time.
3. Use the service-provider loading facility, defined by the[ServiceLoader](../../../java/util/ServiceLoader.html "class in java.util") class, to attempt to locate and load an implementation of the service using the [default loading mechanism](../../../java/util/ServiceLoader.html#load-java.lang.Class-): the service-provider loading facility will use the [current thread's context class loader](../../../java/lang/Thread.html#getContextClassLoader--) to attempt to load the service. If the context class loader is null, the [system class loader](../../../java/lang/ClassLoader.html#getSystemClassLoader--) will be used.
Each potential service provider is required to implement the method[isObjectModelSupported(String objectModel)](../../../javax/xml/xpath/XPathFactory.html#isObjectModelSupported-java.lang.String-). The first service provider found that supports the specified object model is returned.
In case of [ServiceConfigurationError](../../../java/util/ServiceConfigurationError.html "class in java.util") an[XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath") will be thrown.
4. Platform default `XPathFactory` is located in a platform specific way. There must be a [platform default](../../../javax/xml/xpath/XPathFactory.html#newDefaultInstance--) `XPathFactory` for the W3C DOM, i.e.[DEFAULT\_OBJECT\_MODEL\_URI](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FOBJECT%5FMODEL%5FURI).
If everything fails, an `XPathFactoryConfigurationException` will be thrown.
Tip for Trouble-shooting:
See [Properties.load(java.io.InputStream)](../../../java/util/Properties.html#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
Parameters:
`uri` \- Identifies the underlying object model. The specification only defines the URI [DEFAULT\_OBJECT\_MODEL\_URI](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FOBJECT%5FMODEL%5FURI),`http://java.sun.com/jaxp/xpath/dom` for the W3C DOM, the org.w3c.dom package, and implementations are free to introduce other URIs for other object models.
Returns:
Instance of an `XPathFactory`.
Throws:
`[XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")` \- If the specified object model is unavailable, or if there is a configuration error.
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- If `uri` is `null`.
`[IllegalArgumentException](../../../java/lang/IllegalArgumentException.html "class in java.lang")` \- If `uri` is `null` or `uri.length() == 0`.
* #### newInstance
public static [XPathFactory](../../../javax/xml/xpath/XPathFactory.html "class in javax.xml.xpath") newInstance([String](../../../java/lang/String.html "class in java.lang") uri,
[String](../../../java/lang/String.html "class in java.lang") factoryClassName,
[ClassLoader](../../../java/lang/ClassLoader.html "class in java.lang") classLoader)
throws [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")
Obtain a new instance of a `XPathFactory` from a factory class name. `XPathFactory` is returned if specified factory class supports the specified object model. This function is useful when there are multiple providers in the classpath. It gives more control to the application as it can specify which provider should be loaded.
## Tip for Trouble-shooting
Setting the `jaxp.debug` system property will cause this method to print a lot of debug messages to `System.err` about what it is doing and where it is looking at.
If you have problems try:
java -Djaxp.debug=1 YourProgram ....
Parameters:
`uri` \- Identifies the underlying object model. The specification only defines the URI[DEFAULT\_OBJECT\_MODEL\_URI](../../../javax/xml/xpath/XPathFactory.html#DEFAULT%5FOBJECT%5FMODEL%5FURI),`http://java.sun.com/jaxp/xpath/dom` for the W3C DOM, the org.w3c.dom package, and implementations are free to introduce other URIs for other object models.
`factoryClassName` \- fully qualified factory class name that provides implementation of `javax.xml.xpath.XPathFactory`.
`classLoader` \- `ClassLoader` used to load the factory class. If `null` current `Thread`'s context classLoader is used to load the factory class.
Returns:
New instance of a `XPathFactory`
Throws:
`[XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")` \- if `factoryClassName` is `null`, or the factory class cannot be loaded, instantiated or the factory class does not support the object model specified in the `uri` parameter.
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- If `uri` is `null`.
`[IllegalArgumentException](../../../java/lang/IllegalArgumentException.html "class in java.lang")` \- If `uri` is `null` or `uri.length() == 0`.
Since:
1.6
See Also:
[newInstance()](../../../javax/xml/xpath/XPathFactory.html#newInstance--), [newInstance(String uri)](../../../javax/xml/xpath/XPathFactory.html#newInstance-java.lang.String-)
* #### isObjectModelSupported
public abstract boolean isObjectModelSupported([String](../../../java/lang/String.html "class in java.lang") objectModel)
Is specified object model supported by this `XPathFactory`?
Parameters:
`objectModel` \- Specifies the object model which the returned `XPathFactory` will understand.
Returns:
`true` if `XPathFactory` supports `objectModel`, else `false`.
Throws:
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- If `objectModel` is `null`.
`[IllegalArgumentException](../../../java/lang/IllegalArgumentException.html "class in java.lang")` \- If `objectModel.length() == 0`.
* #### setFeature
public abstract void setFeature([String](../../../java/lang/String.html "class in java.lang") name,
boolean value)
throws [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")
Set a feature for this `XPathFactory` and`XPath`s created by this factory.
Feature names are fully qualified [URI](../../../java/net/URI.html "class in java.net")s. Implementations may define their own features. An [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath") 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 [XMLConstants.FEATURE\_SECURE\_PROCESSING](../../../javax/xml/XMLConstants.html#FEATURE%5FSECURE%5FPROCESSING) feature. When the feature is `true`, any reference to an external function is an error. Under these conditions, the implementation must not call the [XPathFunctionResolver](../../../javax/xml/xpath/XPathFunctionResolver.html "interface in javax.xml.xpath") and must throw an [XPathFunctionException](../../../javax/xml/xpath/XPathFunctionException.html "class in javax.xml.xpath").
Parameters:
`name` \- Feature name.
`value` \- Is feature state `true` or `false`.
Throws:
`[XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")` \- if this `XPathFactory` or the `XPath`s it creates cannot support this feature.
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- if `name` is `null`.
* #### getFeature
public abstract boolean getFeature([String](../../../java/lang/String.html "class in java.lang") name)
throws [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")
Get the state of the named feature.
Feature names are fully qualified [URI](../../../java/net/URI.html "class in java.net")s. Implementations may define their own features. An [XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath") 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.
Parameters:
`name` \- Feature name.
Returns:
State of the named feature.
Throws:
`[XPathFactoryConfigurationException](../../../javax/xml/xpath/XPathFactoryConfigurationException.html "class in javax.xml.xpath")` \- if this`XPathFactory` or the `XPath`s it creates cannot support this feature.
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- if `name` is `null`.
* #### setXPathVariableResolver
public abstract void setXPathVariableResolver([XPathVariableResolver](../../../javax/xml/xpath/XPathVariableResolver.html "interface in javax.xml.xpath") 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`.
Parameters:
`resolver` \- Variable resolver.
Throws:
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- If `resolver` is`null`.
* #### setXPathFunctionResolver
public abstract void setXPathFunctionResolver([XPathFunctionResolver](../../../javax/xml/xpath/XPathFunctionResolver.html "interface in javax.xml.xpath") 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`.
Parameters:
`resolver` \- XPath function resolver.
Throws:
`[NullPointerException](../../../java/lang/NullPointerException.html "class in java.lang")` \- If `resolver` is`null`.
* #### newXPath
public abstract [XPath](../../../javax/xml/xpath/XPath.html "interface in javax.xml.xpath") newXPath()
Return a new `XPath` using the underlying object model determined when the `XPathFactory` was instantiated.
Returns:
New instance of an `XPath`.