JavaTM 2 Platform
Standard Ed. 6

javax.xml.parsers
類別 SAXParserFactory

java.lang.Object
  繼承者 javax.xml.parsers.SAXParserFactory

public abstract class SAXParserFactory
extends Object

定義處理器 API,使應用程序能夠配置和獲取基於 SAX 的解析器以解析 XML 文檔。


建構子摘要
protected SAXParserFactory()
          受保護建構子,以強制使用 newInstance()
 
方法摘要
abstract  boolean getFeature(String name)
          返回 org.xml.sax.XMLReader 的底層實作中請求的特定屬性。
 Schema getSchema()
          獲取通過 setSchema(Schema schema) 方法指定的 Schema 物件。
 boolean isNamespaceAware()
          指示是否將處理器配置為產生具有感知名稱空間功能的解析器。
 boolean isValidating()
          指示是否將處理器配置為產生解析器,該解析器在解析時驗證 XML 內容。
 boolean isXIncludeAware()
          獲取 XInclude 處理的狀態。
static SAXParserFactory newInstance()
          獲取 SAXParserFactory 的一個新實例。
static SAXParserFactory newInstance(String factoryClassName, ClassLoader classLoader)
          從類別名稱中獲取新的 SAXParserFactory 實例。
abstract  SAXParser newSAXParser()
          使用當前配置的處理器參數創建 SAXParser 的一個新實例。
abstract  void setFeature(String name, boolean value)
          在 org.xml.sax.XMLReader 的底層實作中設置特定的功能。
 void setNamespaceAware(boolean awareness)
          指定由此程式碼產生的解析器將提供對 XML 名稱空間的支持。
 void setSchema(Schema schema)
          設置將由解析器使用的 Schema,該解析器從此處理器創建。
 void setValidating(boolean validating)
          指定由此程式碼產生的解析器將驗證被解析的文檔。
 void setXIncludeAware(boolean state)
          設置 XInclude 處理的狀態。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

SAXParserFactory

protected SAXParserFactory()

受保護建構子,以強制使用 newInstance()

方法詳細資訊

newInstance

public static SAXParserFactory newInstance()
獲取 SAXParserFactory 的一個新實例。此靜態方法創建一個新的處理器實例,此方法按照以下尋找過程順序來確定要載入的 SAXParserFactory 實例類別: 在應用程序獲取對 SAXParserFactory 的參考後,它可以使用處理器來配置和獲取解析器實例。

疑難解答提示

設置 jaxp.debug 系統屬性將導致此方法將許多除錯訊息列印到 System.err,以說明其執行的操作以及在何處尋找。

如果載入 DocumentBuilder 有問題,請嘗試:

 java -Djaxp.debug=1 YourProgram ....
 

返回:
新的 SAXParserFactory 實例。
拋出:
FactoryConfigurationError - 如果該實作不可用,或者無法被實例化。

newInstance

public static SAXParserFactory newInstance(String factoryClassName,
                                           ClassLoader classLoader)

從類別名稱中獲取新的 SAXParserFactory 實例。此函數在類別路徑中有多個提供者時很有用。它可以對應用程序提供更多的控制,因為它可以指定應該載入哪個提供者。

在應用程序獲取對 SAXParserFactory 的參考後,它可以使用處理器來配置和獲取解析器實例。

疑難解答提示

設置 jaxp.debug 系統屬性將導致此方法將許多除錯訊息列印到 System.err,這些訊息說明了正在執行的操作以及何處可以找到它。

如有問題,可嘗試使用以下程式碼:

 java -Djaxp.debug=1 YourProgram ....
 

參數:
factoryClassName - 提供 javax.xml.parsers.SAXParserFactory 的實作的完全限定處理器類別名稱。
classLoader - 用來載入處理器類別的 ClassLoader。如果該參數為 null,則使用當前 Thread 的上下文類別載入器來載入處理器類別。
返回:
新的 SAXParserFactory 實例
拋出:
FactoryConfigurationError - 如果 factoryClassNamenull,或者無法載入和實例化處理器類別。
從以下版本開始:
1.6
另請參見:
newInstance()

newSAXParser

public abstract SAXParser newSAXParser()
                                throws ParserConfigurationException,
                                       SAXException

使用當前配置的處理器參數創建 SAXParser 的一個新實例。

返回:
新的 SAXParser 實例。
拋出:
ParserConfigurationException - 如果無法創建滿足所請求配置的解析器,將拋出該異常。
SAXException - 用於 SAX 錯誤。

setNamespaceAware

public void setNamespaceAware(boolean awareness)
指定由此程式碼產生的解析器將提供對 XML 名稱空間的支持。預設情況下,其值設置為 false

參數:
awareness - 如果由此程式碼產生的解析器將提供對 XML 名稱空間的支持,則為 true;否則為 false。

setValidating

public void setValidating(boolean validating)
指定由此程式碼產生的解析器將驗證被解析的文檔。預設情況下,其值設置為 false

注意,此處「驗證」是指 XML 規範中定義的驗證解析器。換句話說,它實際上僅控制 DTD 驗證。(JAXP 1.2 中定義的兩個遺留屬性除外。)

要使用現代網要語言(如 W3C XML Schema 或 RELAX NG)而不使用 DTD,您可以將解析器配置為非驗證解析器,方法是將 setValidating(boolean) 方法保留為 false,然後使用 setSchema(Schema) 方法將一個網要與解析器關聯。

參數:
validating - 如果由此程式碼產生的解析器在解析文檔時驗證文檔,則為 true;否則為 false。

isNamespaceAware

public boolean isNamespaceAware()
指示是否將處理器配置為產生具有感知名稱空間功能的解析器。

返回:
如果將處理器配置為產生具有感知名稱空間功能的解析器,則返回 true;否則返回 false。

isValidating

public boolean isValidating()
指示是否將處理器配置為產生解析器,該解析器在解析時驗證 XML 內容。

返回:
如果將處理器配置為產生在解析時驗證 XML 內容的解析器,則返回 true;否則返回 false。

setFeature

public abstract void setFeature(String name,
                                boolean value)
                         throws ParserConfigurationException,
                                SAXNotRecognizedException,
                                SAXNotSupportedException

在 org.xml.sax.XMLReader 的底層實作中設置特定的功能。核心功能和屬性列表可以在 http://www.saxproject.org/ 中找到。

所有實作必須支持 XMLConstants.FEATURE_SECURE_PROCESSING 功能。當功能為以下情況時:

參數:
name - 要設置的功能的名稱。
value - 要設置的功能值。
拋出:
ParserConfigurationException - 如果無法創建滿足所請求配置的解析器。
SAXNotRecognizedException - 當底層 XMLReader 不能識別屬性名稱時。
SAXNotSupportedException - 當底層 XMLReader 可以識別屬性名稱,但不支持該屬性時。
NullPointerException - 如果 name 參數為 null。
另請參見:
XMLReader.setFeature(java.lang.String, boolean)

getFeature

public abstract boolean getFeature(String name)
                            throws ParserConfigurationException,
                                   SAXNotRecognizedException,
                                   SAXNotSupportedException

返回 org.xml.sax.XMLReader 的底層實作中請求的特定屬性。

參數:
name - 要檢索的屬性的名稱。
返回:
所請求屬性的值。
拋出:
ParserConfigurationException - 如果無法創建滿足所請求配置的解析器,將拋出該異常。
SAXNotRecognizedException - 當底層 XMLReader 不能識別屬性名稱時。
SAXNotSupportedException - 當底層 XMLReader 可以識別屬性名稱,但不支持該屬性時。
另請參見:
XMLReader.getProperty(java.lang.String)

getSchema

public Schema getSchema()
獲取通過 setSchema(Schema schema) 方法指定的 Schema 物件。

返回:
最後通過 setSchema(Schema) 方法設置的 Schema 物件,如果該方法由於創建了 SAXParserFactory 而沒有被調用,則返回 null。
拋出:
UnsupportedOperationException - 當該實作沒有覆寫此方法時
從以下版本開始:
1.5

setSchema

public void setSchema(Schema schema)

設置將由解析器使用的 Schema,該解析器從此處理器創建。

如果 Schema 為非 null,則在將資訊向下傳遞到應用程序之前,解析器將使用從中創建的驗證器來驗證文檔。

在驗證器發現警告/錯誤/致命錯誤時,解析器必須處理它們,就好像這些錯誤是由解析器自己發現的一樣。換句話說,如果設置了使用者指定的 ErrorHandler,則它必須接收這些錯誤,否則,必須根據特定於實作的預設錯誤處理規則來處理它們。

驗證器可以修改 SAX 事件串流(例如,通過添加在文檔中缺少的預設值),解析器負責確保應用程序將接收這些修改的事件串流。

最初,null 被設置為 Schema

即使 isValidating() 方法返回 false,此過程也將生效。

http://java.sun.com/xml/jaxp/properties/schemaSource 屬性和/或 http://java.sun.com/xml/jaxp/properties/schemaLanguage 屬性與非 null Schema 物件一起使用將發生錯誤。當在 SAXParser 上設置這些屬性時,此類別配置將導致 SAXException 異常。

實作者請注意:

解析器必須能夠與任何 Schema 實作一起使用。但是,只要能夠產生規範中描述的結果,就允許解析器和網要使用特定於實作的自定義機制。

參數:
schema - 要使用的 Schema,如果移除一個網要,則為 null
拋出:
UnsupportedOperationException - 當該實作沒有覆寫此方法時
從以下版本開始:
1.5

setXIncludeAware

public void setXIncludeAware(boolean state)

設置 XInclude 處理的狀態。

如果在文檔實例中發現 XInclude 標記,則應按 XML Inclusions (XInclude) Version 1.0 中指定的方式處理。

XInclude 處理預設為 false

參數:
state - 將 XInclude 處理設置為 truefalse
拋出:
UnsupportedOperationException - 當該實作沒有覆寫此方法時
從以下版本開始:
1.5

isXIncludeAware

public boolean isXIncludeAware()

獲取 XInclude 處理的狀態。

返回:
XInclude 處理的當前狀態
拋出:
UnsupportedOperationException - 當實作沒有覆寫此方法時
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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