JavaTM 2 Platform
Standard Ed. 6

javax.xml.xpath
類別 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

欄位摘要
static String DEFAULT_OBJECT_MODEL_URI
          預設 Object Model URI。
static String DEFAULT_PROPERTY_NAME
          遵守 JAXP 規範的預設屬性名稱。
 
建構子摘要
protected XPathFactory()
          應使用 newInstance()newInstance(String uri)newInstance(String uri, String factoryClassName, ClassLoader classLoader) 之類別的受保護建構子創建 XPathFactory 的新實例。
 
方法摘要
abstract  boolean getFeature(String name)
          獲取指定功能的狀態。
abstract  boolean isObjectModelSupported(String objectModel)
          此 XPathFactory 是否支持指定的物件模型
static XPathFactory newInstance()
          獲取使用預設物件模型 DEFAULT_OBJECT_MODEL_URI(即 W3C DOM)的新 XPathFactory 實例。
static XPathFactory newInstance(String uri)
          獲取使用指定物件模型的新 XPathFactory 實例。
static XPathFactory newInstance(String uri, String factoryClassName, ClassLoader classLoader)
          根據處理器類別名稱獲取一個新 XPathFactory 實例。
abstract  XPath newXPath()
          返回使用實例化 XPathFactory 時確定的底層物件模型的新 XPath
abstract  void setFeature(String name, boolean value)
          設置此處理器所創建的此 XPathFactoryXPath 的功能。
abstract  void setXPathFunctionResolver(XPathFunctionResolver resolver)
          建立預設函數解析器。
abstract  void setXPathVariableResolver(XPathVariableResolver resolver)
          建立預設變數解析器。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

DEFAULT_PROPERTY_NAME

public static final String DEFAULT_PROPERTY_NAME

遵守 JAXP 規範的預設屬性名稱。

另請參見:
常數欄位值

DEFAULT_OBJECT_MODEL_URI

public static final String DEFAULT_OBJECT_MODEL_URI

預設 Object Model URI。

另請參見:
常數欄位值
建構子詳細資訊

XPathFactory

protected XPathFactory()

應使用 newInstance()newInstance(String uri)newInstance(String uri, String factoryClassName, ClassLoader classLoader) 之類別的受保護建構子創建 XPathFactory 的新實例。

方法詳細資訊

newInstance

public static final XPathFactory newInstance()

獲取使用預設物件模型 DEFAULT_OBJECT_MODEL_URI(即 W3C DOM)的新 XPathFactory 實例。

此方法的功能等效於:

   newInstance(DEFAULT_OBJECT_MODEL_URI)
 

因為 W3C DOM 的實作總是可用的,因此此方法永遠不會失敗。

返回:
XPathFactory 的實例。
拋出:
RuntimeException - 創建預設物件模型的 XPathFactory 遇到故障時。

newInstance

public static final XPathFactory newInstance(String uri)
                                      throws XPathFactoryConfigurationException

獲取使用指定物件模型的新 XPathFactory 實例。

為了尋找 XPathFactory 物件,此方法按以下順序尋找以下位置,其中“類別載入器”指上下文類別載入器:

  1. 如果存在系統屬性 DEFAULT_PROPERTY_NAME + ":uri"(其中 uri 是此方法的參數),則其值作為類別名稱讀取。該方法將試圖通過使用類別載入器創建此類別的新實例,如果創建成功,則返回它。
  2. 讀取 ${java.home}/lib/jaxp.properties,並尋找與作為系統屬性的鍵關聯的值。如果存在,則按上面的方式處理該值。
  3. 類別載入器要求服務提供者的提供者配置檔案與資源目錄 META-INF/services 中的 javax.xml.xpath.XPathFactory 比對。有關檔案格式和解析規則,請參閱 JAR File Specification。每個可能的服務提供者均要實作該方法:
           isObjectModelSupported(String objectModel)
         
    返回支持指定物件模型的類別載入器順序中的第一個服務提供者。
  4. 以特定於平臺的方式來定位平臺預設的 XPathFactory。必須存在 W3C DOM 的平臺預設 的 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_URI、用於 W3C DOM 的 http://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 - 標識底層物件模型。規範只定義了 URI DEFAULT_OBJECT_MODEL_URI、用於 W3C DOM 的 http://java.sun.com/jaxp/xpath/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 理解的物件模型。
返回:
如果 XPathFactory 支持 objectModel,則返回 true,否則返回 false
拋出:
NullPointerException - 如果 objectModelnull
IllegalArgumentException - 如果 objectModel.length() == 0

setFeature

public abstract void setFeature(String name,
                                boolean value)
                         throws XPathFactoryConfigurationException

設置此處理器所創建的此 XPathFactoryXPath 的功能。

功能名稱是完全限定的 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。實作可以定義它們自己的功能。如果此 XPath 或其創建的 XPathFactory 不支持該功能,則拋出 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 的新實例。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only