JavaTM 2 Platform
Standard Ed. 6

javax.xml.parsers
類別 DocumentBuilderFactory

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

public abstract class DocumentBuilderFactory
extends Object

定義處理器 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)
          設置由此處理器創建的此 DocumentBuilderFactoryDocumentBuilder 的功能。
 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
 

建構子詳細資訊

DocumentBuilderFactory

protected DocumentBuilderFactory()

用於阻止實例化的受保護建構子。請使用 newInstance()

方法詳細資訊

newInstance

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

疑難解答提示

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

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

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

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

newInstance

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 - 如果 factoryClassNamenull,或者無法載入和實例化處理器類別。
從以下版本開始:
1.6
另請參見:
newInstance()

newDocumentBuilder

public abstract DocumentBuilder newDocumentBuilder()
                                            throws ParserConfigurationException
使用當前配置的參數創建一個新的 DocumentBuilder 實例。

返回:
新的 DocumentBuilder 實例。
拋出:
ParserConfigurationException - 如果無法創建滿足所請求配置的 DocumentBuilder,將拋出該異常。

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。

setIgnoringElementContentWhitespace

public void setIgnoringElementContentWhitespace(boolean whitespace)
指定由此處理器創建的解析器在解析 XML 文檔時,必須刪除元素內容中的空格(有時也可以稱作「可忽略空格」,請參閱 XML Rec 2.10)。注意,只有在空格直接包含在元素內容中,並且該元素內容是只有一個元素的內容網要時,才能刪除空格(請參閱 XML Rec 3.2.1)。由於依賴於內容網要,因此此設置要求解析器處於驗證網要。預設情況下,其值設置為 false

參數:
whitespace - 如果創建的解析器在解析 XML 文檔時必須刪除元素內容中的空格,則為 true;否則為 false。

setExpandEntityReferences

public void setExpandEntityReferences(boolean expandEntityRef)
指定由此程式碼產生的解析器將擴展實體參考節點。預設情況下,此值設置為 true

參數:
expandEntityRef - 如果產生的解析器將擴展實體參考節點,則為 true;否則為 false。

setIgnoringComments

public void setIgnoringComments(boolean ignoreComments)

指定由此程式碼產生的解析器將忽略註釋。預設情況下,其值設置為 false

參數:
ignoreComments - 在處理過程中忽略註釋的 boolean 值。

setCoalescing

public void setCoalescing(boolean coalescing)
指定由此程式碼產生的解析器將把 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的 Text 節點。預設情況下,其值設置為 false

參數:
coalescing - 產生的解析器將把 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的文本節點,則為 true;否則為 false。

isNamespaceAware

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

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

isValidating

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

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

isIgnoringElementContentWhitespace

public boolean isIgnoringElementContentWhitespace()
指示是否將處理器配置為產生解析器,該解析器忽略元素內容中的可忽略空格。

返回:
如果將處理器配置為產生忽略元素內容中可忽略空格的解析器,則返回 true;否則返回 false。

isExpandEntityReferences

public boolean isExpandEntityReferences()
指示是否將處理器配置為產生擴展實體參考節點的解析器。

返回:
如果將處理器配置為產生擴展實體參考節點的解析器,則返回 true;否則返回 false。

isIgnoringComments

public boolean isIgnoringComments()
指示是否將處理器配置為產生忽略註釋的解析器。

返回:
如果將處理器配置為產生忽略註釋的解析器,則返回 true;否則返回 false。

isCoalescing

public boolean isCoalescing()
指示是否將處理器配置為產生滿足以下條件的解析器:該解析器將 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的 Text 節點。

返回:
將處理器配置為滿足以下條件的解析器:該解析器將 CDATA 節點轉換為 Text 節點,並將其附加到相鄰(如果有)的 Text 節點,則返回 true;否則返回 false。

setAttribute

public abstract void setAttribute(String name,
                                  Object value)
                           throws IllegalArgumentException
允許使用者在底層實作上設置特定屬性。

參數:
name - 屬性名稱。
value - 屬性值。
拋出:
IllegalArgumentException - 如果底層實作無法識別該屬性,則拋出該異常。

getAttribute

public abstract Object getAttribute(String name)
                             throws IllegalArgumentException
允許使用者在底層實作上檢索特定屬性。

參數:
name - 屬性名稱。
返回:
value 屬性值。
拋出:
IllegalArgumentException - 如果底層實作無法識別該屬性,則拋出該異常。

setFeature

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

設置由此處理器創建的此 DocumentBuilderFactoryDocumentBuilder 的功能。

功能名稱是完全限定的 URI。實作可以定義它們自己的功能。如果此 DocumentBuilderFactory 或其創建的 DocumentBuilder 不支持該功能,則拋出 ParserConfigurationExceptionDocumentBuilderFactory 可以公開一個功能值,但無法更改其狀態。

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

參數:
name - 功能名稱。
value - 功能狀態為 truefalse
拋出:
ParserConfigurationException - 如果此 DocumentBuilderFactory 或其創建的 DocumentBuilder 不能支持此功能。
NullPointerException - 如果 name 參數為 null。

getFeature

public abstract boolean getFeature(String name)
                            throws ParserConfigurationException

獲取指定功能的狀態。

功能名稱是完全限定的 URI。實作可以定義它們自己的功能。如果此 DocumentBuilderFactory 或其創建的 DocumentBuilder 不支持該功能,則拋出 ParserConfigurationExceptionDocumentBuilderFactory 可以公開一個功能值,但無法更改其狀態。

參數:
name - 功能名稱。
返回:
指定功能的狀態。
拋出:
ParserConfigurationException - 如果此 DocumentBuilderFactory 或其創建的 DocumentBuilder 不能支持此功能。

getSchema

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

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

setSchema

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 - 當實作沒有覆寫此方法時。
從以下版本開始:
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