|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.xml.parsers.DocumentBuilderFactory
public abstract class DocumentBuilderFactory
定義處理器 API,使應用程序能夠從 XML 文檔獲取產生 DOM 物件階層樹的解析器。
建構子摘要 | |
---|---|
protected |
DocumentBuilderFactory()
用於阻止實例化的受保護建構子。 |
方法摘要 | |
---|---|
abstract Object |
getAttribute(String name)
允許使用者在底層實作上檢索特定屬性。 |
abstract boolean |
getFeature(String name)
獲取指定功能的狀態。 |
Schema |
getSchema()
獲取通過 setSchema(Schema schema) 方法指定的 Schema 物件。 |
boolean |
isCoalescing()
指示是否將處理器配置為產生滿足以下條件的解析器:該解析器將 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的 Text 節點。 |
boolean |
isExpandEntityReferences()
指示是否將處理器配置為產生擴展實體參考節點的解析器。 |
boolean |
isIgnoringComments()
指示是否將處理器配置為產生忽略註釋的解析器。 |
boolean |
isIgnoringElementContentWhitespace()
指示是否將處理器配置為產生解析器,該解析器忽略元素內容中的可忽略空格。 |
boolean |
isNamespaceAware()
指示是否將處理器配置為產生具有感知名稱空間功能的解析器。 |
boolean |
isValidating()
指示是否將處理器配置為產生解析器,該解析器在解析時驗證 XML 內容。 |
boolean |
isXIncludeAware()
獲取 XInclude 處理的狀態。 |
abstract DocumentBuilder |
newDocumentBuilder()
使用當前配置的參數創建一個新的 DocumentBuilder 實例。 |
static DocumentBuilderFactory |
newInstance()
獲取 DocumentBuilderFactory 的新實例。 |
static DocumentBuilderFactory |
newInstance(String factoryClassName,
ClassLoader classLoader)
從類別名稱中獲取新的 DocumentBuilderFactory 實例。 |
abstract void |
setAttribute(String name,
Object value)
允許使用者在底層實作上設置特定屬性。 |
void |
setCoalescing(boolean coalescing)
指定由此程式碼產生的解析器將把 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的 Text 節點。 |
void |
setExpandEntityReferences(boolean expandEntityRef)
指定由此程式碼產生的解析器將擴展實體參考節點。 |
abstract void |
setFeature(String name,
boolean value)
設置由此處理器創建的此 DocumentBuilderFactory 和 DocumentBuilder 的功能。 |
void |
setIgnoringComments(boolean ignoreComments)
指定由此程式碼產生的解析器將忽略註釋。 |
void |
setIgnoringElementContentWhitespace(boolean whitespace)
指定由此處理器創建的解析器在解析 XML 文檔時,必須刪除元素內容中的空格(有時也可以稱作「可忽略空格」,請參閱 XML Rec 2.10)。 |
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 DocumentBuilderFactory()
用於阻止實例化的受保護建構子。請使用 newInstance()
。
方法詳細資訊 |
---|
public static DocumentBuilderFactory newInstance()
DocumentBuilderFactory
的新實例。此 static 方法創建一個新的處理器實例。此方法使用以下尋找過程順序來確定要載入的 DocumentBuilderFactory
實作類別:
javax.xml.parsers.DocumentBuilderFactory
系統屬性。
java.util.Properties
且包含實作類別的完全限定名,其中實作類別的鍵是上述定義的系統屬性。
JAXP 實作只讀取一次 jaxp.properties 檔案,然後快取記憶體其值供以後使用。如果首次嘗試讀取檔案時,檔案不存在,則不會再次嘗試檢查該檔案是否存在。首次讀取 jaxp.properties 後,其中的屬性值不能再更改。
META-INF/services/javax.xml.parsers.DocumentBuilderFactory
檔案中的類別名。
DocumentBuilderFactory
實例。
DocumentBuilderFactory
的參考後,它可以使用處理器來配置和獲取解析器實例。
設置 jaxp.debug
系統屬性將導致此方法將許多除錯訊息列印到 System.err
,以說明其執行的操作以及在何處尋找。
如果載入 DocumentBuilder
有問題,請嘗試:
java -Djaxp.debug=1 YourProgram ....
DocumentBuilderFactory
實例
FactoryConfigurationError
- 如果該實作不可用,或者無法實例化。public static DocumentBuilderFactory newInstance(String factoryClassName, ClassLoader classLoader)
從類別名稱中獲取新的 DocumentBuilderFactory
實例。此函數在類別路徑中有多個提供者時很有用。它可以對應用程序提供更多的控制,因為它可以指定應該載入哪個提供者。
在應用程序獲取對 DocumentBuilderFactory
的參考後,它可以使用處理器來配置和獲取解析器實例。
設置 jaxp.debug
系統屬性將導致此方法將許多除錯訊息列印到 System.err
,這些訊息說明了正在執行的操作以及何處可以找到它。
如有問題,可嘗試使用以下程式碼:
java -Djaxp.debug=1 YourProgram ....
factoryClassName
- 提供 javax.xml.parsers.DocumentBuilderFactory
的實作的完全限定處理器類別名稱。classLoader
- 用來載入處理器類別的 ClassLoader
。如果該參數為 null
,則使用當前 Thread
的上下文類別載入器來載入處理器類別。
DocumentBuilderFactory
實例
FactoryConfigurationError
- 如果 factoryClassName
為 null
,或者無法載入和實例化處理器類別。newInstance()
public abstract DocumentBuilder newDocumentBuilder() throws ParserConfigurationException
DocumentBuilder
實例。
ParserConfigurationException
- 如果無法創建滿足所請求配置的 DocumentBuilder,將拋出該異常。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 void setIgnoringElementContentWhitespace(boolean whitespace)
false
。
whitespace
- 如果創建的解析器在解析 XML 文檔時必須刪除元素內容中的空格,則為 true;否則為 false。public void setExpandEntityReferences(boolean expandEntityRef)
true
。
expandEntityRef
- 如果產生的解析器將擴展實體參考節點,則為 true;否則為 false。public void setIgnoringComments(boolean ignoreComments)
指定由此程式碼產生的解析器將忽略註釋。預設情況下,其值設置為 false
。
ignoreComments
- 在處理過程中忽略註釋的 boolean
值。public void setCoalescing(boolean coalescing)
false
。
coalescing
- 產生的解析器將把 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的文本節點,則為 true;否則為 false。public boolean isNamespaceAware()
public boolean isValidating()
public boolean isIgnoringElementContentWhitespace()
public boolean isExpandEntityReferences()
public boolean isIgnoringComments()
public boolean isCoalescing()
public abstract void setAttribute(String name, Object value) throws IllegalArgumentException
name
- 屬性名稱。value
- 屬性值。
IllegalArgumentException
- 如果底層實作無法識別該屬性,則拋出該異常。public abstract Object getAttribute(String name) throws IllegalArgumentException
name
- 屬性名稱。
IllegalArgumentException
- 如果底層實作無法識別該屬性,則拋出該異常。public abstract void setFeature(String name, boolean value) throws ParserConfigurationException
設置由此處理器創建的此 DocumentBuilderFactory
和 DocumentBuilder
的功能。
功能名稱是完全限定的 URI
。實作可以定義它們自己的功能。如果此 DocumentBuilderFactory
或其創建的 DocumentBuilder
不支持該功能,則拋出 ParserConfigurationException
。DocumentBuilderFactory
可以公開一個功能值,但無法更改其狀態。
所有實作必須支持 XMLConstants.FEATURE_SECURE_PROCESSING
功能。當功能為以下情況時:
true
:該實作將限制 XML 處理遵守實作限制。範例包括實體擴展限制和將使用大量資源的 XML 網要建構。如果出於安全原因限制 XML 處理,將通過調用註冊的 ErrorHandler.fatalError(SAXParseException exception)
進行報告。請參閱 DocumentBuilder.setErrorHandler(org.xml.sax.ErrorHandler errorHandler)
。
false
:實作將根據 XML 規範來處理 XML,而無需考慮可能的實作限制。
name
- 功能名稱。value
- 功能狀態為 true
或 false
。
ParserConfigurationException
- 如果此 DocumentBuilderFactory
或其創建的 DocumentBuilder
不能支持此功能。
NullPointerException
- 如果 name
參數為 null。public abstract boolean getFeature(String name) throws ParserConfigurationException
獲取指定功能的狀態。
功能名稱是完全限定的 URI
。實作可以定義它們自己的功能。如果此 DocumentBuilderFactory
或其創建的 DocumentBuilder
不支持該功能,則拋出 ParserConfigurationException
。DocumentBuilderFactory
可以公開一個功能值,但無法更改其狀態。
name
- 功能名稱。
ParserConfigurationException
- 如果此 DocumentBuilderFactory
或其創建的 DocumentBuilder
不能支持此功能。public Schema getSchema()
setSchema(Schema schema)
方法指定的 Schema
物件。
setSchema(Schema)
方法設置的 Schema
物件,如果由於創建了 DocumentBuilderFactory
而沒有調用該方法,則返回 null。
UnsupportedOperationException
- 當實作沒有覆寫此方法時。public void setSchema(Schema schema)
設置將由解析器使用的 Schema
,該解析器從此處理器創建。
如果 Schema
為非 null,則在將資訊向下傳遞到應用程序之前,解析器將使用從中創建的驗證器來驗證文檔。
驗證器發現錯誤後,解析器負責向使用者指定的 ErrorHandler
報告這些錯誤(如果未設置錯誤處理程序,則忽略或拋出這些錯誤),就像由解析器本身發現的其他任何錯誤一樣。換句話說,如果設置了使用者指定的 ErrorHandler
,則它必須接收這些錯誤,否則,必須根據特定於實作的預設錯誤處理規則來處理它們。
驗證器可以修改解析器的結果(例如,通過在文檔中添加丟失的預設值),解析器負責確保應用程序接收修改的 DOM 階層樹。
最初,null 被設置為 Schema
。
即使 isValidating()
方法返回 false
,此過程也將生效。
將 http://java.sun.com/xml/jaxp/properties/schemaSource
屬性和/或 http://java.sun.com/xml/jaxp/properties/schemaLanguage
屬性與 Schema
物件一起使用將發生錯誤。這些配置將導致在調用 newDocumentBuilder()
時出現 ParserConfigurationException
異常。
解析器必須能夠與任何 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。