- 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
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
DEFAULT_OBJECT_MODEL_URI
默认对象模型URI。static String
DEFAULT_PROPERTY_NAME
根据JAXP规范的默认属性名称。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
XPathFactory()
应使用受保护的构造函数作为newInstance()
或newInstance(String uri)
或newInstance(String uri, String factoryClassName, ClassLoader classLoader)
创建一个新的实例XPathFactory
。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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)
建立一个默认变量解析器。
-
-
-
字段详细信息
-
DEFAULT_PROPERTY_NAME
public static final String DEFAULT_PROPERTY_NAME
根据JAXP规范的默认属性名称。
- 另请参见:
- Constant Field Values
-
DEFAULT_OBJECT_MODEL_URI
public static final String DEFAULT_OBJECT_MODEL_URI
默认对象模型URI。
- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
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()
获取一个新的
XPathFactory
实例使用默认对象模型,DEFAULT_OBJECT_MODEL_URI
,W3C DOM。此方法在功能上相当于:
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尝试加载服务。 如果上下文类加载器为空,则将使用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
s。 实现可以定义自己的特征。 如果这个XPathFactory
或其创建的XPath
不能支持该功能,则抛出一个XPathFactoryConfigurationException
。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
s。 实现可以定义自己的特征。 如果这个XPathFactory
或其创建的XPath
s不能支持该功能,则抛出一个XPathFactoryConfigurationException
。XPathFactory
可以公开特征值,但无法更改其状态。- 参数
-
name
- 功能名称。 - 结果
- 命名功能的状态。
- 异常
-
XPathFactoryConfigurationException
- 如果这个XPathFactory
或其创建的XPath
不能支持此功能。 -
NullPointerException
- 如果name
是null
。
-
setXPathVariableResolver
public abstract void setXPathVariableResolver(XPathVariableResolver resolver)
建立一个默认变量解析器。
任何
XPath
工厂构造的XPath
对象默认使用指定的解析器。一个
NullPointerException
如果抛出resolver
为null
。- 参数
-
resolver
- 可变resolver
器。 - 异常
-
NullPointerException
- 如果resolver
是null
。
-
setXPathFunctionResolver
public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver)
建立默认函数解析器。
任何
XPath
工厂构造的XPath
对象默认使用指定的解析器。一个
NullPointerException
如果抛出resolver
为null
。- 参数
-
resolver
- XPath函数解析器。 - 异常
-
NullPointerException
- 如果resolver
是null
。
-
newXPath
public abstract XPath newXPath()
当
XPathFactory
被实例化时,使用确定的底层对象模型返回一个新的XPath
。- 结果
-
新实例的一个
XPath
。
-
-