Module  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规范的默认属性名称。

        另请参见:
        Constant Field Values
      • DEFAULT_OBJECT_MODEL_URI

        public static final String DEFAULT_OBJECT_MODEL_URI

        默认对象模型URI。

        另请参见:
        Constant Field Values
    • 方法详细信息

      • 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对象,该方法按照以下顺序查找以下位置,“类加载器”是指上下文类加载器:

        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尝试加载服务。 如果上下文类加载器为空,则将使用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工厂构造的XPath对象默认使用指定的解析器。

        一个NullPointerException如果抛出resolvernull

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

        public abstract void setXPathFunctionResolver​(XPathFunctionResolver resolver)

        建立默认函数解析器。

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

        一个NullPointerException如果抛出resolvernull

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

        public abstract XPath newXPath​()

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

        结果
        新实例的一个 XPath