XPathFactory
实例可用于创建XPath
对象。
查看newInstance(String uri)
以获取查找机制。
XPathFactory
类不是线程安全的。换句话说,应用程序有责任确保在任何给定时刻最多只有一个线程在使用XPathFactory
对象。鼓励实现将方法标记为synchronized
以保护自己免受错误客户端的影响。
XPathFactory
不可重入。在调用newInstance
方法之一时,应用程序不得尝试从同一线程递归调用newInstance
方法。
- 自版本:
- 1.5
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
受保护的构造函数应使用newInstance()
或newInstance(String uri)
或newInstance(String uri, String factoryClassName, ClassLoader classLoader)
来创建XPathFactory
的新实例。 -
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
getFeature
(String name) 获取指定特性的状态。getProperty
(String name) 返回指定属性的值。abstract boolean
isObjectModelSupported
(String objectModel) 此XPathFactory
是否支持指定的对象模型?static XPathFactory
创建内置系统默认实现的XPathFactory
的新实例。static XPathFactory
使用默认对象模型DEFAULT_OBJECT_MODEL_URI
(W3C DOM)获取新的XPathFactory
实例。static XPathFactory
newInstance
(String uri) 使用指定对象模型获取新的XPathFactory
实例。static XPathFactory
newInstance
(String uri, String factoryClassName, ClassLoader classLoader) 从工厂类名获取XPathFactory
的新实例。abstract XPath
newXPath()
在实例化XPathFactory
时确定的基础对象模型上返回新的XPath
。abstract void
setFeature
(String name, boolean value) 为此XPathFactory
设置一个特性。void
setProperty
(String name, String value) 为此XPathFactory
设置一个属性。abstract void
建立默认函数解析器。abstract void
建立默认变量解析器。
-
Field Details
-
DEFAULT_PROPERTY_NAME
符合JAXP规范的默认属性名称。
- 参见:
-
DEFAULT_OBJECT_MODEL_URI
默认对象模型URI。
- 参见:
-
-
Constructor Details
-
XPathFactory
protected XPathFactory()受保护的构造函数应使用
newInstance()
或newInstance(String uri)
或newInstance(String uri, String factoryClassName, ClassLoader classLoader)
来创建XPathFactory
的新实例。
-
-
Method Details
-
newDefaultInstance
创建内置系统默认实现的XPathFactory
的新实例。- 实现要求:
-
内置系统默认实现的
XPathFactory
仅需要支持默认对象模型,即W3C DOM,但可以支持其他对象模型。 - 返回:
-
内置系统默认实现的
XPathFactory
的新实例。 - 自版本:
- 9
-
newInstance
使用默认对象模型
DEFAULT_OBJECT_MODEL_URI
(W3C DOM)获取新的XPathFactory
实例。此方法在功能上等同于:
newInstance(DEFAULT_OBJECT_MODEL_URI)
由于W3C DOM的实现始终可用,因此此方法永远不会失败。
- 返回:
-
XPathFactory
的实例。 - 抛出:
-
RuntimeException
- 当为默认对象模型创建XPathFactory
时发生故障时。
-
newInstance
使用指定对象模型获取新的
XPathFactory
实例。此方法使用JAXP查找机制来确定和加载支持指定对象模型的XPathFactory
实现。故障排除提示:
查看
Properties.load(java.io.InputStream)
以了解属性文件的解析方式。特别是,在属性文件中冒号':'需要转义,因此确保URI在其中被正确转义。例如:http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
- 参数:
-
uri
- 标识基础对象模型。规范仅为W3C DOM的URIDEFAULT_OBJECT_MODEL_URI
,http://java.sun.com/jaxp/xpath/dom
,org.w3c.dom包定义,实现可以自由引入其他URI以支持其他对象模型。 - 返回:
-
XPathFactory
的实例。 - 抛出:
-
XPathFactoryConfigurationException
- 如果指定的对象模型不可用,或存在配置错误。 -
NullPointerException
- 如果uri
为null
。 -
IllegalArgumentException
- 如果uri
为null
或uri.length() == 0
。
-
newInstance
public static XPathFactory newInstance(String uri, String factoryClassName, ClassLoader classLoader) throws XPathFactoryConfigurationException 从工厂类名获取
XPathFactory
的新实例。如果指定的工厂类支持指定的对象模型,则返回XPathFactory
。当类路径中存在多个提供程序时,此函数很有用。它使应用程序具有更多控制权,因为可以指定应加载哪个提供程序。故障排除提示
设置
jaxp.debug
系统属性将导致此方法向System.err
打印大量关于其操作和查看位置的调试消息。如果遇到问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
- 参数:
-
uri
- 标识基础对象模型。规范仅为W3C DOM的URIDEFAULT_OBJECT_MODEL_URI
,http://java.sun.com/jaxp/xpath/dom
,org.w3c.dom包定义,实现可以自由引入其他URI以支持其他对象模型。 -
factoryClassName
- 提供javax.xml.xpath.XPathFactory
实现的完全限定工厂类名。 -
classLoader
- 用于加载工厂类的ClassLoader
。如果为null
,则使用当前Thread
的上下文类加载器来加载工厂类。 - 返回:
-
XPathFactory
的新实例 - 抛出:
-
XPathFactoryConfigurationException
- 如果factoryClassName
为null
,或无法加载、实例化工厂类,或工厂类不支持uri
参数中指定的对象模型。 -
NullPointerException
- 如果uri
为null
。 -
IllegalArgumentException
- 如果uri
为null
或uri.length() == 0
。 - 自版本:
- 1.6
- 参见:
-
isObjectModelSupported
此
XPathFactory
是否支持指定的对象模型?- 参数:
-
objectModel
- 指定返回的XPathFactory
将理解的对象模型。 - 返回:
-
如果
XPathFactory
支持objectModel
,则返回true
,否则返回false
。 - 抛出:
-
NullPointerException
- 如果objectModel
为null
。 -
IllegalArgumentException
- 如果objectModel.length() == 0
。
-
setFeature
public abstract void setFeature(String name, boolean value) throws XPathFactoryConfigurationException 设置此XPathFactory
的特性。该特性适用于XPathFactory
创建的XPath
对象。它不会影响已经创建的XPath
对象。特性名称是完全限定的
URI
。实现可以定义自己的特性。如果此XPathFactory
或其创建的XPath
对象不支持该特性,则会抛出一个XPathFactoryConfigurationException
。XPathFactory
可能会公开一个特性值,但无法更改其状态。所有实现都必须支持
XMLConstants.FEATURE_SECURE_PROCESSING
特性。当特性为true
时,对外部函数的任何引用都将导致错误。在这种情况下,实现不得调用XPathFunctionResolver
,并且必须抛出一个XPathFunctionException
。- 参数:
-
name
- 特性名称。 -
value
- 特性状态为true
或false
。 - 抛出:
-
XPathFactoryConfigurationException
- 如果此XPathFactory
或其创建的XPath
对象不支持此特性。 -
NullPointerException
- 如果name
为null
。
-
getFeature
获取指定特性的状态。
特性名称是完全限定的
URI
。实现可以定义自己的特性。如果此XPathFactory
或其创建的XPath
对象不支持该特性,则会抛出一个XPathFactoryConfigurationException
。XPathFactory
可能会公开一个特性值,但无法更改其状态。- 参数:
-
name
- 特性名称。 - 返回:
- 特性的状态。
- 抛出:
-
XPathFactoryConfigurationException
- 如果此XPathFactory
或其创建的XPath
对象不支持此特性。 -
NullPointerException
- 如果name
为null
。
-
setXPathVariableResolver
建立一个默认的变量解析器。
从此工厂构造的任何
XPath
对象将默认使用指定的解析器。如果
resolver
为null
,则会抛出NullPointerException
。- 参数:
-
resolver
- 变量解析器。 - 抛出:
-
NullPointerException
- 如果resolver
为null
。
-
setXPathFunctionResolver
建立一个默认的函数解析器。
从此工厂构造的任何
XPath
对象将默认使用指定的解析器。如果
resolver
为null
,则会抛出NullPointerException
。- 参数:
-
resolver
- XPath函数解析器。 - 抛出:
-
NullPointerException
- 如果resolver
为null
。
-
newXPath
使用实例化
XPathFactory
时确定的底层对象模型返回一个新的XPath
。- 返回:
-
XPath
的新实例。
-
setProperty
设置此XPathFactory
的属性。该属性适用于XPathFactory
创建的XPath
对象。它不会影响已经创建的XPath
对象。属性可以在此
XPathFactory
中定义,也可以由底层实现定义。- 实现要求:
-
默认实现会抛出
UnsupportedOperationException
。 - 参数:
-
name
- 属性名称 -
value
- 属性的值 - 抛出:
-
IllegalArgumentException
- 如果属性名称未被识别,或值无法分配 -
UnsupportedOperationException
- 如果实现不支持该方法 -
NullPointerException
- 如果name
为null
- 自:
- 18
-
getProperty
返回指定属性的值。- 实现要求:
-
默认实现会抛出
UnsupportedOperationException
。 - 参数:
-
name
- 属性名称 - 返回:
- 属性的值。
- 抛出:
-
IllegalArgumentException
- 如果属性名称未被识别 -
UnsupportedOperationException
- 如果实现不支持该方法 -
NullPointerException
- 如果name
为null
- 自:
- 18
-