java.lang.Objectjavax.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 的新实例。