JavaTM 2 Platform
Standard Ed. 6

javax.xml.validation
類別 Validator

java.lang.Object
  繼承者 javax.xml.validation.Validator

public abstract class Validator
extends Object

根據 Schema 檢查 XML 文檔的處理器。

Validator 物件不是執行緒安全的,也不能重入。換句話說,應用程序負責確保在任意給定時刻不能有多個執行緒同時使用 Validator 物件,且當調用 validate 方法時,應用程序不能以遞歸方式調用 validate 方法。

從以下版本開始:
1.5

建構子摘要
protected Validator()
          派生類別的建構子。
 
方法摘要
abstract  ErrorHandler getErrorHandler()
          獲取設置為此 Validator 的當前 ErrorHandler
 boolean getFeature(String name)
          尋找功能標誌的值。
 Object getProperty(String name)
          尋找屬性值。
abstract  LSResourceResolver getResourceResolver()
          獲取設置為此 Validator 的當前 LSResourceResolver
abstract  void reset()
          將此 Validator 重置為其初始配置。
abstract  void setErrorHandler(ErrorHandler errorHandler)
          設置 ErrorHandler 以接收在 validate 方法調用期間遇到的錯誤。
 void setFeature(String name, boolean value)
          設置功能標誌的值。
 void setProperty(String name, Object object)
          設置屬性值。
abstract  void setResourceResolver(LSResourceResolver resourceResolver)
          設置 LSResourceResolver 以自定義驗證期間的資源解析。
 void validate(Source source)
          驗證指定的輸入。
abstract  void validate(Source source, Result result)
          驗證指定輸入並將擴充的驗證結果發送到指定輸出。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

Validator

protected Validator()
派生類別的建構子。

建構子不執行任何操作。

派生類別必須創建具有 null ErrorHandlernull LSResourceResolverValidator 物件。

方法詳細資訊

reset

public abstract void reset()

將此 Validator 重置為其初始配置。

Validator 被重置為通過 Schema.newValidator() 創建它時的狀態。reset() 在設目標是允許重用現有的 Validator,從而節省與創建新的 Validator 相關的資源。

不保證重置的 Validator 具有相同的 LSResourceResolverErrorHandler Object,例如 Object.equals(Object obj)。但保證具有功能相等的 LSResourceResolverErrorHandler


validate

public void validate(Source source)
              throws SAXException,
                     IOException
驗證指定的輸入。

這只是 validate(Source source, Result result)resultnull)的一個便捷方法。

參數:
source - 要驗證的 XML。該參數必須為 XML 文檔或 XML 元素,不可以為 null。為了向後相容,試圖驗證文檔或元素以外的任何內容的所得結果都由實作決定。實作必須能識別並處理輸入,否則將拋出 IllegalArgumentException。
拋出:
IllegalArgumentException - 如果 Source 是實作無法驗證的 XML 人為因素(例如,一個處理指令)。
SAXException - 如果 ErrorHandler 拋出 SAXException,或者發現致命錯誤且 ErrorHandler 正常返回。
IOException - 如果驗證器正在處理 SAXSource 且底層 XMLReader 拋出了 IOException
NullPointerException - 如果 sourcenull
另請參見:
validate(Source source, Result result)

validate

public abstract void validate(Source source,
                              Result result)
                       throws SAXException,
                              IOException

驗證指定輸入並將擴充的驗證結果發送到指定輸出。

此方法對所接受的 Source/Result 的型別設置了以下限制。

所接受的 Source / Result
StreamSource SAXSource DOMSource StAXSource
null OK OK OK OK
StreamResult OK IllegalArgumentException IllegalArgumentException IllegalArgumentException
SAXResult IllegalArgumentException OK IllegalArgumentException IllegalArgumentException
DOMResult IllegalArgumentException IllegalArgumentException OK IllegalArgumentException
StAXResult IllegalArgumentException IllegalArgumentException IllegalArgumentException OK

要驗證一個 Source 並輸出到另一種型別的 Result 中,請使用恆等轉換器(參見 TransformerFactory.newTransformer())。

將驗證中發現的錯誤發送到指定的 ErrorHandler

如果文檔有效,或者文檔包含某些錯誤但無致命錯誤且 ErrorHandler 不拋出任何異常,則該方法正常返回。

參數:
source - 要驗證的 XML。該參數必須為 XML 文檔或 XML 元素,不可以為 null。為了向後相容,試圖驗證文檔或元素以外的任何內容的所得結果都由實作決定。實作必須能識別並處理輸入,否則將拋出 IllegalArgumentException。
result - 接收(可能是擴充的)XML 的 Result 物件。如果調用者不需要它,則此參數可以為 null。注意,當使用 DOMResult 時,驗證器可以只是將來自 DOMSource 的相同 DOM 節點傳遞到 DOMResult(在這種情況下,source.getNode()==result.getNode()),它可能複製整個 DOM 階層樹,或者更改源所給定的節點。
拋出:
IllegalArgumentException - 如果 Result 型別與 Source 型別不比對,或者 Source 是實作無法驗證的 XML 人為因素(例如,一個處理指令)。
SAXException - 如果 ErrorHandler 拋出 SAXException,或者出現致命錯誤且 ErrorHandler 正常返回。
IOException - 如果驗證器正在處理 SAXSource,且底層 XMLReader 拋出 IOException
NullPointerException - 如果 source 參數為 null
另請參見:
validate(Source source)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)
設置 ErrorHandler 以接收在 validate 方法調用期間遇到的錯誤。

錯誤處理程序可用於自定義驗證期間的錯誤處理過程。當設置 ErrorHandler 時,驗證期間發現的錯誤將首先發送到 ErrorHandler

錯誤處理程序通過拋出來自處理程序的 SAXException 可以立即中止進一步的驗證。例如,它可以將錯誤列印到螢幕上,並嘗試通過從 ErrorHandler 正常返回來繼續該驗證。

如果從 ErrorHandler 拋出任何 Throwable,則 validate 方法的調用者將接收相同的 Throwable 物件。

Validator 沒有先向 ErrorHandler 報告之前,不能拋出 SAXException

ErrorHandler 為 null 時,實作的行為就好像設置了以下 ErrorHandler 一樣。

 class DraconianErrorHandler implements ErrorHandler {
     public void fatalError( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void error( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void warning( SAXParseException e ) throws SAXException {
         // noop
     }
 }
 

當創建新 Validator 物件時,此欄位在初始化時被設置為 null。

參數:
errorHandler - 要設置的新錯誤處理程序。此參數可以為 null。

getErrorHandler

public abstract ErrorHandler getErrorHandler()
獲取設置為此 Validator 的當前 ErrorHandler

返回:
此方法返回通過 setErrorHandler(ErrorHandler) 方法設置的最後一個物件,如果自從創建此 Validator 以來一直未調用該方法,則返回 null。
另請參見:
setErrorHandler(ErrorHandler)

setResourceResolver

public abstract void setResourceResolver(LSResourceResolver resourceResolver)
設置 LSResourceResolver 以自定義驗證期間的資源解析。

在驗證期間,Validator 在需要尋找外部資源時使用 LSResourceResolver,雖然“尋找外部資源”的準確含義取決於每種網要語言。

LSResourceResolver 為 null 時,實作的行為就好像設置了以下 LSResourceResolver 一樣。

 class DumbLSResourceResolver implements LSResourceResolver {
     public LSInput resolveResource(
         String publicId, String systemId, String baseURI) {
         
         return null; // always return null
     }
 }
 

如果 LSResourceResolver 拋出 RuntimeException(或其派生類別的實例),則 Validator 將中止解析,且 validate 方法的調用者將接收相同的 RuntimeException

當創建新 Validator 物件時,此欄位在初始化時被設置為 null。

參數:
resourceResolver - 要設置的新資源解析器。此參數可以為 null。

getResourceResolver

public abstract LSResourceResolver getResourceResolver()
獲取設置為此 Validator 的當前 LSResourceResolver

返回:
此方法返回通過 setResourceResolver(LSResourceResolver) 方法設置的最後一個物件,如果自從創建此 Validator 以來一直未調用該方法,則返回 null。
另請參見:
setErrorHandler(ErrorHandler)

getFeature

public boolean getFeature(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
尋找功能標誌的值。

功能名稱是任何完全限定的 URI。Validator 有可能識別功能名稱,但暫時不能返回其值。某些功能值可能只有在特定上下文中才能使用,例如在驗證前、驗證中或驗證之後。

實作者可隨意選擇(鼓勵)創建自己的功能,方法是使用在它們自己的 URI 上建構的名稱。

參數:
name - 功能名稱,它是非 null 的完全限定 URI。
返回:
功能的當前值(true 或 false)。
拋出:
SAXNotRecognizedException - 如果不能分派或檢索功能值。
SAXNotSupportedException - 當 Validator 可以識別功能名稱但不能確定它此時的值時。
NullPointerException - 當 name 參數為 null 時。
另請參見:
setFeature(String, boolean)

setFeature

public void setFeature(String name,
                       boolean value)
                throws SAXNotRecognizedException,
                       SAXNotSupportedException
設置功能標誌的值。

功能可用於控制 Validator 解析網要的方法,雖然 Validator 無需識別任何指定的特性名稱。

功能名稱是任何完全限定的 URI。Validator 有可能公開功能值,但不能更改當前值。某些功能值可能只有在特定上下文中才是不可變的或可變的,例如在驗證前、驗證中或驗證之後。

參數:
name - 功能名稱,它是非 null 的完全限定 URI。
value - 所請求的功能值(true 或 false)。
拋出:
SAXNotRecognizedException - 如果不能分派或檢索功能值。
SAXNotSupportedException - 當 Validator 可以識別功能名稱,但不能設置請求的值時。
NullPointerException - 當 name 參數為 null 時。
另請參見:
getFeature(String)

setProperty

public void setProperty(String name,
                        Object object)
                 throws SAXNotRecognizedException,
                        SAXNotSupportedException
設置屬性值。

屬性名稱是任何完全限定的 URI。Validator 有可能識別屬性名稱,但不能更改當前值。某些屬性值可能只有在特定上下文中才是不可變的或可變的,例如在驗證前、驗證中或驗證之後。

Validator 無需識別設置任何指定的屬性名稱。

參數:
name - 屬性名稱,它是非 null 的完全限定 URI。
object - 所請求的屬性值。
拋出:
SAXNotRecognizedException - 如果不能分派或檢索屬性值。
SAXNotSupportedException - 當 Validator 可以識別屬性名稱,但不能設置請求的值時。
NullPointerException - 當 name 參數為 null 時。

getProperty

public Object getProperty(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
尋找屬性值。

屬性名稱是任何完全限定的 URI。Validator 有可能識別屬性名稱,但暫時不能返回其值。某些屬性值可能只有在特定上下文中才能使用,例如在驗證前、驗證中或驗證之後。

Validator 無需識別任何指定的屬性名稱。

實作者可隨意選擇(鼓勵)創建自己的屬性,方法是使用在它們自己的 URI 上建構的名稱。

參數:
name - 屬性名稱,它是非 null 的完全限定 URI。
返回:
屬性的當前值。
拋出:
SAXNotRecognizedException - 如果不能分派或檢索屬性值。
SAXNotSupportedException - 當 XMLReader 可以識別屬性名稱,但不能確定它此時的值時。
NullPointerException - 當 name 參數為 null 時。
另請參見:
setProperty(String, Object)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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