模块 java.xml

类 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
  • 字段详细信息

    • 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 实例。此方法使用 JAXP 查找机制 确定并加载支持指定对象模型的 XPathFactory 实现。

      故障排除提示:

      请参阅 Properties.load(java.io.InputStream) 了解属性文件的具体解析方式。特别是,冒号“:”需要在属性文件中进行转义,因此请确保其中的 URI 已正确转义。例如:

        http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
       
      参数:
      uri - 标识底层对象模型。该规范仅为 W3C DOM、org.w3c.dom 包定义了 URI DEFAULT_OBJECT_MODEL_URI http://java.sun.com/jaxp/xpath/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、org.w3c.dom 包定义了 URI DEFAULT_OBJECT_MODEL_URI http://java.sun.com/jaxp/xpath/dom,实现可以自由地为其他对象模型引入其他 URI。
      factoryClassName - 提供 javax.xml.xpath.XPathFactory 实现的完全限定工厂类名称。
      classLoader - ClassLoader 用于加载工厂类。如果使用nullcurrentThread的context classLoader加载工厂类。
      返回:
      XPathFactory 的新实例
      抛出:
      XPathFactoryConfigurationException - 如果 factoryClassNamenull ,或者无法加载、实例化工厂类,或者工厂类不支持 uri 参数中指定的对象模型。
      NullPointerException - 如果 urinull
      IllegalArgumentException - 如果 urinulluri.length() == 0
      自从:
      1.6
      参见:
    • isObjectModelSupported

      public abstract boolean isObjectModelSupported(String  objectModel)

      这个 XPathFactory 支持指定的对象模型吗?

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

      public abstract void setFeature(String  name, boolean value) throws XPathFactoryConfigurationException
      为此 XPathFactory 设置一个功能。该功能适用于 XPathFactory 创建的 XPath 对象。它对已创建的 XPath 对象没有影响。

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

      所有实现都需要支持 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 s。实现可以定义自己的特性。如果此 XPathFactory 或它创建的 XPath 不支持该功能,则会抛出 XPathFactoryConfigurationException XPathFactory 可以公开一个特征值但无法更改其状态。

      参数:
      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