java.lang.Object javax.xml.xpath.XPathFactory
public abstract class XPathFactory
XPathFactory
实例可用于创建 XPath
对象。
有关查找机制,请参阅 newInstance(String uri)
。
XPathFactory
类不是线程安全的。换句话说,应用程序负责确保任意给定时刻最多只有一个线程使用 XPathFactory
对象。建议实现将方法标记为 synchronized
以保护客户端不至于崩溃。
XPathFactory
不可重入。当正在调用某个 newInstance
方法时,应用程序不能试图以递归方式调用 newInstance
方法,即使是从相同的线程调用。
字段摘要 | |
---|---|
static String |
DEFAULT_OBJECT_MODEL_URI 默认 Object Model 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 |
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) 建立默认变量解析器。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final String DEFAULT_PROPERTY_NAME
遵守 JAXP 规范的默认属性名称。
public static final String DEFAULT_OBJECT_MODEL_URI
默认 Object Model URI。
构造方法详细信息 |
---|
protected XPathFactory()
应使用 newInstance()
、newInstance(String uri)
或 newInstance(String uri, String factoryClassName, ClassLoader classLoader)
之类的受保护构造方法创建 XPathFactory
的新实例。
方法详细信息 |
---|
public static final XPathFactory newInstance()
获取使用默认对象模型 DEFAULT_OBJECT_MODEL_URI
(即 W3C DOM)的新 XPathFactory
实例。
此方法的功能等效于:
newInstance(DEFAULT_OBJECT_MODEL_URI)
因为 W3C DOM 的实现总是可用的,因此此方法永远不会失败。
XPathFactory
的实例。
RuntimeException
- 创建默认对象模型的
XPathFactory
遇到故障时。
public static final XPathFactory newInstance(String uri) throws XPathFactoryConfigurationException
获取使用指定对象模型的新 XPathFactory
实例。
为了查找 XPathFactory
对象,此方法按以下顺序查找以下位置,其中“类加载器”指上下文类加载器:
DEFAULT_PROPERTY_NAME
+ ":uri"(其中 uri 是此方法的参数),则其值作为类名称读取。该方法将试图通过使用类加载器创建此类的新实例,如果创建成功,则返回它。 javax.xml.xpath.XPathFactory
匹配。有关文件格式和解析规则,请参阅 JAR File Specification。每个可能的服务提供者均要实现该方法:
isObjectModelSupported(String objectModel)
返回支持指定对象模型的类加载器顺序中的第一个服务提供者。 XPathFactory
。必须存在 W3C DOM 的平台默认 的 XPathFactory,即 DEFAULT_OBJECT_MODEL_URI
。 如果这些都失败,则抛出 XPathFactoryConfigurationException
。
疑难解答提示:
有关如何精确解析属性文件的信息,请参阅 Properties.load(java.io.InputStream)
。尤其是,冒号 ':'在属性文件中需要转义,因此要确保 URI 在其中进行正确转义。例如:
http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
uri
- 标识底层对象模型。规范只定义了 URI
DEFAULT_OBJECT_MODEL_URI
、用于 W3C DOM 的
http://java.sun.com/jaxp/xpath/dom
、org.w3c.dom 包。至于其他对象模型,实现可随意引入其他 URI。
XPathFactory
的实例。
XPathFactoryConfigurationException
- 如果指定的对象模型不可用。
NullPointerException
- 如果
uri
为
null
。
IllegalArgumentException
- 如果
uri
为
null
或
uri.length() == 0
。
public static XPathFactory newInstance(String uri, String factoryClassName, ClassLoader classLoader) throws XPathFactoryConfigurationException
根据工厂类名称获取一个新 XPathFactory
实例。如果指定的工厂类支持指定的对象模型,则返回 XPathFactory
。当类路径中有多个提供者时此函数很有用。它给了应用程序更多的控制权,因为它能指定应该加载哪个提供者。
设置 jaxp.debug
系统属性将导致此方法将许多调试消息打印到 System.err
,以说明正在执行的操作以及在何处查找。
如有问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
uri
- 标识底层对象模型。规范只定义了 URI
DEFAULT_OBJECT_MODEL_URI
、用于 W3C DOM 的
http://java.sun.com/jaxp/xpath/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
。
newInstance()
,
newInstance(String uri)
public abstract boolean isObjectModelSupported(String objectModel)
此 XPathFactory
是否支持指定的对象模型
objectModel
- 指定返回的
XPathFactory
理解的对象模型。
XPathFactory
支持
objectModel
,则返回
true
,否则返回
false
。
NullPointerException
- 如果
objectModel
为
null
。
IllegalArgumentException
- 如果
objectModel.length() == 0
。
public abstract void setFeature(String name, boolean value) throws XPathFactoryConfigurationException
设置此工厂所创建的此 XPathFactory
和 XPath
的功能。
功能名称是完全限定的 URI
。实现可以定义它们自己的功能。如果此 XPathFactory
或其创建的 XPath
不支持该功能,则抛出 XPathFactoryConfigurationException
。XPathFactory
可以公开功能值,但不能更改其状态。
所有实现必须支持 XMLConstants.FEATURE_SECURE_PROCESSING
功能。当功能为 true
时,任何对外部函数的引用均是错误的。在这些条件下,实现不能调用 XPathFunctionResolver
且必须抛出 XPathFunctionException
。
name
- 功能名称。
value
- 功能状态为
true
或
false
。
XPathFactoryConfigurationException
- 如果此
XPathFactory
或其创建的
XPath
不支持此功能。
NullPointerException
- 如果
name
为
null
。
public abstract boolean getFeature(String name) throws XPathFactoryConfigurationException
获取指定功能的状态。
功能名称是完全限定的 URI
。实现可以定义它们自己的功能。如果此 XPath
或其创建的 XPathFactory
不支持该功能,则抛出 XPathFactoryConfigurationException
。XPathFactory
可以公开功能值,但不能更改其状态。
name
- 功能名称。
XPathFactoryConfigurationException
- 如果此
XPathFactory
或其创建的
XPath
不支持此功能。
NullPointerException
- 如果
name
为
null
。
public abstract void setXPathVariableResolver(XPathVariableResolver resolver)
建立默认变量解析器。
从此工厂构造的任何 XPath
对象将默认使用指定的解析器。
如果 resolver
为 null
,则抛出 NullPointerException
。
resolver
- 变量解析器。
NullPointerException
- 如果
resolver
为
null
。
public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver)
建立默认函数解析器。
从此工厂构造的任何 XPath
对象将默认使用指定的解析器。
如果 resolver
为 null
,则抛出 NullPointerException
。
resolver
- XPath 函数解析器。
NullPointerException
- 如果
resolver
为
null
。
public abstract XPath newXPath()
返回使用实例化 XPathFactory
时确定的底层对象模型的新 XPath
。
XPath
的新实例。