- java.lang.Object
-
- javax.xml.xpath.XPathFactory
-
public abstract class XPathFactory extends Object
可以使用
XPathFactory
实例创建XPath
对象。有关查找机制,请参阅
newInstance(String uri)
。XPathFactory
类不是线程安全的。 换句话说,应用程序有责任确保在任何给定时刻最多只有一个线程使用XPathFactory
对象。 鼓励实现将方法标记为synchronized
以保护自己免受破坏的客户端的影响。XPathFactory
不可重复使用。 当调用newInstance
方法之一时,应用程序可能不会尝试以递归方式调用newInstance
方法,即使是在同一个线程中也是如此。- 从以下版本开始:
- 1.5
-
-
字段汇总
字段 变量和类型 字段 描述 static String
DEFAULT_OBJECT_MODEL_URI
默认对象模型URI。static String
DEFAULT_PROPERTY_NAME
根据JAXP规范的默认属性名称。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
XPathFactory()
应使用受保护的构造函数newInstance()
或newInstance(String uri)
或newInstance(String uri, String factoryClassName, ClassLoader classLoader)
来创建XPathFactory
的新实例。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract boolean
getFeature(String name)
获取指定功能的状态。abstract boolean
isObjectModelSupported(String objectModel)
此XPathFactory
是否支持指定的对象模型?static XPathFactory
newDefaultInstance()
创建XPathFactory
内置系统默认实现的新实例。static XPathFactory
newInstance()
使用默认对象模型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
和XPath
的功能。abstract void
setXPathFunctionResolver(XPathFunctionResolver resolver)
建立默认函数解析器。abstract void
setXPathVariableResolver(XPathVariableResolver resolver)
建立默认变量解析器。
-
-
-
构造方法详细信息
-
XPathFactory
protected XPathFactory()
应使用受保护的构造函数
newInstance()
或newInstance(String uri)
或newInstance(String uri, String factoryClassName, ClassLoader classLoader)
来创建XPathFactory
的新实例。
-
-
方法详细信息
-
newDefaultInstance
public static XPathFactory newDefaultInstance()
创建XPathFactory
内置系统默认实现的新实例。- 实现要求:
-
该
XPathFactory
内置系统默认的实现只需要支持default object model
,该 W3C DOM ,但可能支持额外的对象模型。 - 结果
-
XPathFactory
内置系统默认实现的新实例。 - 从以下版本开始:
- 9
-
newInstance
public static XPathFactory newInstance()
使用默认对象模型
DEFAULT_OBJECT_MODEL_URI
(W3C DOM)获取新的XPathFactory
实例。此方法在功能上等同于:
newInstance(DEFAULT_OBJECT_MODEL_URI)
由于W3C DOM的实现始终可用,因此该方法永远不会失败。
- 结果
-
实例
XPathFactory
。 - 异常
-
RuntimeException
- 为默认对象模型创建XPathFactory
失败时。
-
newInstance
public static XPathFactory newInstance(String uri) throws XPathFactoryConfigurationException
使用指定的对象模型获取新的
XPathFactory
实例。要查找
XPathFactory
对象,此方法按以下顺序查看以下位置,其中“类加载器”引用上下文类加载器:如果系统属性
DEFAULT_PROPERTY_NAME
+“:uri”存在,其中uri是此方法的参数,则其值将作为类名读取。 该方法将尝试使用类加载器创建此类的新实例,并在成功创建时返回它。使用配置文件“jaxp.properties”。 该文件采用标准
Properties
格式,通常位于Java安装的conf目录中。 它包含实现类的完全限定名称,键是上面定义的系统属性。jaxp.properties文件只能由JAXP实现读取一次,然后缓存其值以供将来使用。 如果在第一次尝试从该文件读取时该文件不存在,则不再进行任何检查以检查其是否存在。 在第一次读取之后,无法更改jaxp.properties中任何属性的值。
使用服务提供商装载设施,由定义
ServiceLoader
类,试图找到并使用加载服务的实现default loading mechanism :服务提供商装载设施将使用current thread's context class loader试图加载的服务。 如果上下文类加载器为null,则将使用system class loader 。
每个潜在的服务提供商都需要实施方法isObjectModelSupported(String objectModel)
。 找到支持指定对象模型的第一个服务提供者。
如果是ServiceConfigurationError
,则会抛出XPathFactoryConfigurationException
。平台默认
XPathFactory
位于特定于平台的方式中。 对于W3C DOM,必须有platform defaultXPathFactory
,即DEFAULT_OBJECT_MODEL_URI
。
如果一切都失败了,将抛出一个
XPathFactoryConfigurationException
。故障排除提示:
有关如何解析属性文件的信息,请参阅
Properties.load(java.io.InputStream)
。 特别是,冒号':'需要在属性文件中进行转义,因此请确保在其中正确转义URI。 例如:http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
- 参数
-
uri
- 标识基础对象模型。 本说明书中只定义了URIDEFAULT_OBJECT_MODEL_URI
,http://java.sun.com/jaxp/xpath/dom
为W3C 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
- 标识基础对象模型。 本说明书中只定义了URIDEFAULT_OBJECT_MODEL_URI
,http://java.sun.com/jaxp/xpath/dom
为W3C DOM,org.w3c.dom包,和实施方式可以自由地引入其他的URI其他对象模型。 -
factoryClassName
- 提供javax.xml.xpath.XPathFactory
实现的完全限定工厂类名称。 -
classLoader
-ClassLoader
用于加载工厂类。 如果null
当前Thread
的上下文classLoader用于加载工厂类。 - 结果
-
XPathFactory
新实例 - 异常
-
XPathFactoryConfigurationException
- 如果factoryClassName
是null
,或者无法加载,实例化工厂类或工厂类不支持uri
参数中指定的对象模型。 -
NullPointerException
- 如果uri
是null
。 -
IllegalArgumentException
- 如果uri
是null
或uri.length() == 0
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
newInstance()
,newInstance(String uri)
-
isObjectModelSupported
public abstract boolean isObjectModelSupported(String objectModel)
此
XPathFactory
是否支持指定的对象模型?- 参数
-
objectModel
- 指定返回的XPathFactory
将理解的对象模型。 - 结果
-
true
如果XPathFactory
支持objectModel
,其他false
。 - 异常
-
NullPointerException
- 如果objectModel
是null
。 -
IllegalArgumentException
- 如果是objectModel.length() == 0
。
-
setFeature
public abstract void setFeature(String name, boolean value) throws XPathFactoryConfigurationException
设置此工厂创建的
XPathFactory
和XPath
的功能。功能名称是完全限定的
URI
。 实现可以定义自己的功能。 一个XPathFactoryConfigurationException
如果这是抛出XPathFactory
或XPath
的IT创建不支持该功能。XPathFactory
可能会公开特征值但无法更改其状态。所有实现都需要支持
XMLConstants.FEATURE_SECURE_PROCESSING
功能。 当该功能为true
,对外部函数的任何引用都是错误。 在这些条件下,实现不得调用XPathFunctionResolver
并且必须抛出XPathFunctionException
。- 参数
-
name
- 功能名称。 -
value
- 功能状态为true
或false
。 - 异常
-
XPathFactoryConfigurationException
- 如果这个XPathFactory
或它创建的XPath
不能支持此功能。 -
NullPointerException
- 如果name
是null
。
-
getFeature
public abstract boolean getFeature(String name) throws XPathFactoryConfigurationException
获取指定功能的状态。
功能名称完全限定
URI
。 实现可以定义自己的功能。 一个XPathFactoryConfigurationException
如果这是抛出XPathFactory
或XPath
的IT创建不支持该功能。XPathFactory
可能会公开特征值但无法更改其状态。- 参数
-
name
- 功能名称。 - 结果
- 命名功能的状态。
- 异常
-
XPathFactoryConfigurationException
- 如果这个XPathFactory
或它创建的XPath
不能支持此功能。 -
NullPointerException
- 如果name
是null
。
-
setXPathVariableResolver
public abstract void setXPathVariableResolver(XPathVariableResolver resolver)
建立默认变量解析器。
从该工厂构造的任何
XPath
对象将默认使用指定的解析程序。一个
NullPointerException
如果抛出resolver
为null
。- 参数
-
resolver
- 可变解析器。 - 异常
-
NullPointerException
- 如果resolver
是null
。
-
setXPathFunctionResolver
public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver)
建立默认函数解析器。
从该工厂构造的任何
XPath
对象将默认使用指定的解析程序。一个
NullPointerException
如果抛出resolver
为null
。- 参数
-
resolver
- XPath函数解析器。 - 异常
-
NullPointerException
- 如果resolver
是null
。
-
newXPath
public abstract XPath newXPath()
使用在实例化
XPathFactory
时确定的基础对象模型返回新的XPath
。- 结果
-
XPath
新实例。
-
-