- 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 StringDEFAULT_OBJECT_MODEL_URI默认对象模型URI。static StringDEFAULT_PROPERTY_NAME根据JAXP规范的默认属性名称。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedXPathFactory()应使用受保护的构造函数作为newInstance()或newInstance(String uri)或newInstance(String uri, String factoryClassName, ClassLoader classLoader)创建一个新的实例XPathFactory。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract booleangetFeature(String name)获取命名功能的状态。abstract booleanisObjectModelSupported(String objectModel)这个XPathFactory是否支持指定的对象模型?static XPathFactorynewDefaultInstance()创建一个XPathFactory内置系统默认实现的新实例。static XPathFactorynewInstance()使用默认对象模型DEFAULT_OBJECT_MODEL_URI,W3C DOM获取新的XPathFactory实例。static XPathFactorynewInstance(String uri)使用指定的对象模型获取一个新的XPathFactory实例。static XPathFactorynewInstance(String uri, String factoryClassName, ClassLoader classLoader)从工厂类名称获取一个新的实例XPathFactory。abstract XPathnewXPath()当XPathFactory被实例化时,使用确定的底层对象模型返回一个新的XPath。abstract voidsetFeature(String name, boolean value)为这个工厂创建的这个XPathFactory和XPath设置了一个功能。abstract voidsetXPathFunctionResolver(XPathFunctionResolver resolver)建立默认函数解析器。abstract voidsetXPathVariableResolver(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创建一个功能。功能名称完全符合条件
URIs。 实现可以定义自己的特征。 如果这个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
获取命名功能的状态。
功能名称完全符合条件
URIs。 实现可以定义自己的特征。 如果这个XPathFactory或其创建的XPaths不能支持该功能,则抛出一个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。
-
-