模块  java.xml
软件包  javax.xml.xpath

Class XPathFactory


  • public abstract class XPathFactory
    extends Object

    可以使用XPathFactory实例创建XPath对象。

    有关查找机制,请参阅newInstance(String uri)

    XPathFactory类不是线程安全的。 换句话说,应用程序有责任确保在任何给定时刻最多只有一个线程使用XPathFactory对象。 鼓励实现将方法标记为synchronized以保护自己免受破坏的客户端的影响。

    XPathFactory不可重复使用。 当调用newInstance方法之一时,应用程序可能不会尝试以递归方式调用newInstance方法,即使是在同一个线程中也是如此。

    从以下版本开始:
    1.5
    • 字段详细信息

      • DEFAULT_PROPERTY_NAME

        public static final String DEFAULT_PROPERTY_NAME

        根据JAXP规范的默认属性名称。

        另请参见:
        常数字段值
      • DEFAULT_OBJECT_MODEL_URI

        public static final String DEFAULT_OBJECT_MODEL_URI

        默认对象模型URI。

        另请参见:
        常数字段值
    • 方法详细信息

      • 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对象,此方法按以下顺序查看以下位置,其中“类加载器”引用上下文类加载器:

        1. 如果系统属性DEFAULT_PROPERTY_NAME +“:uri”存在,其中uri是此方法的参数,则其值将作为类名读取。 该方法将尝试使用类加载器创建此类的新实例,并在成功创建时返回它。

        2. 使用配置文件“jaxp.properties”。 该文件采用标准Properties格式,通常位于Java安装的conf目录中。 它包含实现类的完全限定名称,键是上面定义的系统属性。

          jaxp.properties文件只能由JAXP实现读取一次,然后缓存其值以供将来使用。 如果在第一次尝试从该文件读取时该文件不存在,则不再进行任何检查以检查其是否存在。 在第一次读取之后,无法更改jaxp.properties中任何属性的值。

        3. 使用服务提供商装载设施,由定义ServiceLoader类,试图找到并使用加载服务的实现default loading mechanism :服务提供商装载设施将使用current thread's context class loader试图加载的服务。 如果上下文类加载器为null,则将使用system class loader
          每个潜在的服务提供商都需要实施方法isObjectModelSupported(String objectModel) 找到支持指定对象模型的第一个服务提供者。
          如果是ServiceConfigurationError ,则会抛出XPathFactoryConfigurationException

        4. 平台默认XPathFactory位于特定于平台的方式中。 对于W3C DOM,必须有platform default 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_URIhttp://java.sun.com/jaxp/xpath/dom为W3C 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 - 标识基础对象模型。 本说明书中只定义了URI DEFAULT_OBJECT_MODEL_URIhttp://java.sun.com/jaxp/xpath/dom为W3C DOM,org.w3c.dom包,和实施方式可以自由地引入其他的URI其他对象模型。
        factoryClassName - 提供 javax.xml.xpath.XPathFactory实现的完全限定工厂类名称。
        classLoader - ClassLoader用于加载工厂类。 如果null当前Thread的上下文classLoader用于加载工厂类。
        结果
        XPathFactory新实例
        异常
        XPathFactoryConfigurationException - 如果 factoryClassNamenull ,或者无法加载,实例化工厂类或工厂类不支持 uri参数中指定的对象模型。
        NullPointerException - 如果 urinull
        IllegalArgumentException - 如果 urinulluri.length() == 0
        从以下版本开始:
        1.6
        另请参见:
        newInstance()newInstance(String uri)
      • isObjectModelSupported

        public abstract boolean isObjectModelSupported​(String objectModel)

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

        参数
        objectModel - 指定返回的 XPathFactory将理解的对象模型。
        结果
        true如果 XPathFactory支持 objectModel ,其他 false
        异常
        NullPointerException - 如果 objectModelnull
        IllegalArgumentException - 如果是 objectModel.length() == 0
      • setXPathVariableResolver

        public abstract void setXPathVariableResolver​(XPathVariableResolver resolver)

        建立默认变量解析器。

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

        一个NullPointerException如果抛出resolvernull

        参数
        resolver - 可变解析器。
        异常
        NullPointerException - 如果 resolvernull
      • setXPathFunctionResolver

        public abstract void setXPathFunctionResolver​(XPathFunctionResolver resolver)

        建立默认函数解析器。

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

        一个NullPointerException如果抛出resolvernull

        参数
        resolver - XPath函数解析器。
        异常
        NullPointerException - 如果 resolvernull
      • newXPath

        public abstract XPath newXPath()

        使用在实例化XPathFactory时确定的基础对象模型返回新的XPath

        结果
        XPath新实例。