- 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 StringDEFAULT_OBJECT_MODEL_URI默认对象模型URI。static StringDEFAULT_PROPERTY_NAME根据JAXP规范的默认属性名称。 
-  
             
构造方法摘要
构造方法 变量 构造器 描述 protectedXPathFactory()应使用受保护的构造函数newInstance()或newInstance(String uri)或newInstance(String uri, String factoryClassName, ClassLoader classLoader)来创建XPathFactory的新实例。 
-  
             
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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)建立默认变量解析器。 
 -  
             
 
-  
        
       
-  
             
构造方法详细信息
-  
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新实例。 
 
 -  
 
 -