|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.xml.parsers.SAXParserFactory
public abstract class SAXParserFactory
定義處理器 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 |
建構子詳細資訊 |
---|
protected SAXParserFactory()
受保護建構子,以強制使用 newInstance()
。
方法詳細資訊 |
---|
public static SAXParserFactory newInstance()
SAXParserFactory
的一個新實例。此靜態方法創建一個新的處理器實例,此方法按照以下尋找過程順序來確定要載入的 SAXParserFactory
實例類別:
javax.xml.parsers.SAXParserFactory
系統屬性。
java.util.Properties
且包含實作類別的完全限定名,其中實作類別的鍵是上述定義的系統屬性。
JAXP 實作只讀取一次 jaxp.properties 檔案,然後快取記憶體其值供以後使用。如果首次嘗試讀取檔案時,檔案不存在,則不會再次嘗試檢查該檔案是否存在。首次讀取 jaxp.properties 後,其中的屬性值不能再更改。
META-INF/services/javax.xml.parsers.SAXParserFactory
檔案中的類別名。
SAXParserFactory
實例。
SAXParserFactory
的參考後,它可以使用處理器來配置和獲取解析器實例。
設置 jaxp.debug
系統屬性將導致此方法將許多除錯訊息列印到 System.err
,以說明其執行的操作以及在何處尋找。
如果載入 DocumentBuilder
有問題,請嘗試:
java -Djaxp.debug=1 YourProgram ....
FactoryConfigurationError
- 如果該實作不可用,或者無法被實例化。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
- 如果 factoryClassName
為 null
,或者無法載入和實例化處理器類別。newInstance()
public abstract SAXParser newSAXParser() throws ParserConfigurationException, SAXException
使用當前配置的處理器參數創建 SAXParser 的一個新實例。
ParserConfigurationException
- 如果無法創建滿足所請求配置的解析器,將拋出該異常。
SAXException
- 用於 SAX 錯誤。public void setNamespaceAware(boolean awareness)
false
。
awareness
- 如果由此程式碼產生的解析器將提供對 XML 名稱空間的支持,則為 true;否則為 false。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。public boolean isNamespaceAware()
public boolean isValidating()
public abstract void setFeature(String name, boolean value) throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException
在 org.xml.sax.XMLReader 的底層實作中設置特定的功能。核心功能和屬性列表可以在 http://www.saxproject.org/ 中找到。
所有實作必須支持 XMLConstants.FEATURE_SECURE_PROCESSING
功能。當功能為以下情況時:
true
:該實作將限制 XML 處理遵守實作限制。範例包括實體擴展限制和將使用大量資源的 XML 網要建構。如果出於安全原因限制 XML 處理,將通過調用註冊的 ErrorHandler.fatalError(SAXParseException exception)
進行報告。請參見處理程序規範的 SAXParser
parse
方法。
false
時,該實作將根據 XML 規範處理 XML,而無需考慮可能的實作限制。
name
- 要設置的功能的名稱。value
- 要設置的功能值。
ParserConfigurationException
- 如果無法創建滿足所請求配置的解析器。
SAXNotRecognizedException
- 當底層 XMLReader 不能識別屬性名稱時。
SAXNotSupportedException
- 當底層 XMLReader 可以識別屬性名稱,但不支持該屬性時。
NullPointerException
- 如果 name
參數為 null。XMLReader.setFeature(java.lang.String, boolean)
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)
public Schema getSchema()
setSchema(Schema schema)
方法指定的 Schema
物件。
setSchema(Schema)
方法設置的 Schema
物件,如果該方法由於創建了 SAXParserFactory
而沒有被調用,則返回 null。
UnsupportedOperationException
- 當該實作沒有覆寫此方法時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
- 當該實作沒有覆寫此方法時public void setXIncludeAware(boolean state)
設置 XInclude 處理的狀態。
如果在文檔實例中發現 XInclude 標記,則應按 XML Inclusions (XInclude) Version 1.0 中指定的方式處理。
XInclude 處理預設為 false
。
state
- 將 XInclude 處理設置為 true
或 false
UnsupportedOperationException
- 當該實作沒有覆寫此方法時public boolean isXIncludeAware()
獲取 XInclude 處理的狀態。
UnsupportedOperationException
- 當實作沒有覆寫此方法時
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。