Module java.xml
Package javax.xml.xpath

Class XPathFactory

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 Details

    • DEFAULT_PROPERTY_NAME

      public static final String DEFAULT_PROPERTY_NAME

      符合JAXP规范的默认属性名称。

      参见:
    • DEFAULT_OBJECT_MODEL_URI

      public static final String DEFAULT_OBJECT_MODEL_URI

      默认对象模型URI。

      参见:
  • Constructor Details

    • XPathFactory

      protected XPathFactory()

      受保护的构造函数应使用newInstance()newInstance(String uri)newInstance(String uri, String factoryClassName, ClassLoader classLoader)来创建XPathFactory的新实例。

  • Method Details

    • newDefaultInstance

      public static XPathFactory newDefaultInstance()
      创建内置系统默认实现的XPathFactory的新实例。
      实现要求:
      内置系统默认实现的XPathFactory仅需要支持默认对象模型,即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实例。此方法使用JAXP查找机制来确定和加载支持指定对象模型的XPathFactory实现。

      故障排除提示:

      查看Properties.load(java.io.InputStream)以了解属性文件的解析方式。特别是,在属性文件中冒号':'需要转义,因此确保URI在其中被正确转义。例如:

         http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
       
      参数:
      uri - 标识基础对象模型。规范仅为W3C DOM的URIDEFAULT_OBJECT_MODEL_URIhttp://java.sun.com/jaxp/xpath/dom,org.w3c.dom包定义,实现可以自由引入其他URI以支持其他对象模型。
      返回:
      XPathFactory的实例。
      抛出:
      XPathFactoryConfigurationException - 如果指定的对象模型不可用,或存在配置错误。
      NullPointerException - 如果urinull
      IllegalArgumentException - 如果urinulluri.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 - 标识基础对象模型。规范仅为W3C DOM的URIDEFAULT_OBJECT_MODEL_URIhttp://java.sun.com/jaxp/xpath/dom,org.w3c.dom包定义,实现可以自由引入其他URI以支持其他对象模型。
      factoryClassName - 提供javax.xml.xpath.XPathFactory实现的完全限定工厂类名。
      classLoader - 用于加载工厂类的ClassLoader。如果为null,则使用当前Thread的上下文类加载器来加载工厂类。
      返回:
      XPathFactory的新实例
      抛出:
      XPathFactoryConfigurationException - 如果factoryClassNamenull,或无法加载、实例化工厂类,或工厂类不支持uri参数中指定的对象模型。
      NullPointerException - 如果urinull
      IllegalArgumentException - 如果urinulluri.length() == 0
      自版本:
      1.6
      参见:
    • isObjectModelSupported

      public abstract boolean isObjectModelSupported(String objectModel)

      XPathFactory是否支持指定的对象模型?

      参数:
      objectModel - 指定返回的XPathFactory将理解的对象模型。
      返回:
      如果XPathFactory支持objectModel,则返回true,否则返回false
      抛出:
      NullPointerException - 如果objectModelnull
      IllegalArgumentException - 如果objectModel.length() == 0
    • setFeature

      public abstract void setFeature(String name, boolean value) throws XPathFactoryConfigurationException
      设置此XPathFactory的特性。该特性适用于XPathFactory创建的XPath对象。它不会影响已经创建的XPath对象。

      特性名称是完全限定的URI。实现可以定义自己的特性。如果此XPathFactory或其创建的XPath对象不支持该特性,则会抛出一个XPathFactoryConfigurationExceptionXPathFactory可能会公开一个特性值,但无法更改其状态。

      所有实现都必须支持XMLConstants.FEATURE_SECURE_PROCESSING特性。当特性为true时,对外部函数的任何引用都将导致错误。在这种情况下,实现不得调用XPathFunctionResolver,并且必须抛出一个XPathFunctionException

      参数:
      name - 特性名称。
      value - 特性状态为truefalse
      抛出:
      XPathFactoryConfigurationException - 如果此XPathFactory或其创建的XPath对象不支持此特性。
      NullPointerException - 如果namenull
    • getFeature

      public abstract boolean getFeature(String name) throws XPathFactoryConfigurationException

      获取指定特性的状态。

      特性名称是完全限定的URI。实现可以定义自己的特性。如果此XPathFactory或其创建的XPath对象不支持该特性,则会抛出一个XPathFactoryConfigurationExceptionXPathFactory可能会公开一个特性值,但无法更改其状态。

      参数:
      name - 特性名称。
      返回:
      特性的状态。
      抛出:
      XPathFactoryConfigurationException - 如果此XPathFactory或其创建的XPath对象不支持此特性。
      NullPointerException - 如果namenull
    • setXPathVariableResolver

      public abstract void setXPathVariableResolver(XPathVariableResolver resolver)

      建立一个默认的变量解析器。

      从此工厂构造的任何XPath对象将默认使用指定的解析器。

      如果resolvernull,则会抛出NullPointerException

      参数:
      resolver - 变量解析器。
      抛出:
      NullPointerException - 如果resolvernull
    • setXPathFunctionResolver

      public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver)

      建立一个默认的函数解析器。

      从此工厂构造的任何XPath对象将默认使用指定的解析器。

      如果resolvernull,则会抛出NullPointerException

      参数:
      resolver - XPath函数解析器。
      抛出:
      NullPointerException - 如果resolvernull
    • newXPath

      public abstract XPath newXPath()

      使用实例化XPathFactory时确定的底层对象模型返回一个新的XPath

      返回:
      XPath的新实例。
    • setProperty

      public void setProperty(String name, String value)
      设置此XPathFactory的属性。该属性适用于XPathFactory创建的XPath对象。它不会影响已经创建的XPath对象。

      属性可以在此XPathFactory中定义,也可以由底层实现定义。

      实现要求:
      默认实现会抛出UnsupportedOperationException
      参数:
      name - 属性名称
      value - 属性的值
      抛出:
      IllegalArgumentException - 如果属性名称未被识别,或值无法分配
      UnsupportedOperationException - 如果实现不支持该方法
      NullPointerException - 如果namenull
      自:
      18
    • getProperty

      public String getProperty(String name)
      返回指定属性的值。
      实现要求:
      默认实现会抛出UnsupportedOperationException
      参数:
      name - 属性名称
      返回:
      属性的值。
      抛出:
      IllegalArgumentException - 如果属性名称未被识别
      UnsupportedOperationException - 如果实现不支持该方法
      NullPointerException - 如果namenull
      自:
      18