JavaTM 2 Platform
Standard Ed. 6

org.xml.sax.ext
類別 DefaultHandler2

java.lang.Object
  繼承者 org.xml.sax.helpers.DefaultHandler
      繼承者 org.xml.sax.ext.DefaultHandler2
所有已實作的介面:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler, DeclHandler, EntityResolver2, LexicalHandler

public class DefaultHandler2
extends DefaultHandler
implements LexicalHandler, DeclHandler, EntityResolver2

此類別擴展 SAX2 基本處理程序類別,以支持 SAX2 LexicalHandlerDeclHandlerEntityResolver2 擴展。除了覆寫原始 SAX1 resolveEntity() 方法之外,僅返回添加的處理程序方法。子類別可能在逐個方法的基礎上覆寫每個事情。

此模組(包括源程式碼和文檔)在公共域中,同時 沒有擔保

註:此類別可能仍知道 ContentHandler.setDocumentLocator() 調用可能被傳遞一個 Locator2 物件,並且 ContentHandler.startElement() 調用被傳遞一個 Attributes2 物件。

從以下版本開始:
SAX 2.0 (extensions 1.1 alpha)

建構子摘要
DefaultHandler2()
          建構忽略所有解析事件的處理程序。
 
方法摘要
 void attributeDecl(String eName, String aName, String type, String mode, String value)
          報告屬性型別宣告。
 void comment(char[] ch, int start, int length)
          報告文檔的任何位置的 XML 註釋。
 void elementDecl(String name, String model)
          報告元素型別宣告。
 void endCDATA()
          報告 CDATA 節的結束。
 void endDTD()
          報告 DTD 宣告的結束。
 void endEntity(String name)
          報告實體的結束。
 void externalEntityDecl(String name, String publicId, String systemId)
          報告解析的外部實體宣告。
 InputSource getExternalSubset(String name, String baseURI)
          告知解析器如果在文檔文本中沒有宣告任何外部子集,則不應使用任何外部子集。
 void internalEntityDecl(String name, String value)
          報告內部實體宣告。
 InputSource resolveEntity(String publicId, String systemId)
          使用 null 實體名稱和基 URI 調用 EntityResolver2.resolveEntity()
 InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
          告知解析器根據 baseURI 解析 systemId,並從產生的絕對 URI 讀取實體文本。
 void startCDATA()
          報告 CDATA 節的開始。
 void startDTD(String name, String publicId, String systemId)
          報告 DTD 宣告的開始(如果存在)。
 void startEntity(String name)
          報告一些內部和外部 XML 實體的開始。
 
從類別 org.xml.sax.helpers.DefaultHandler 繼承的方法
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

DefaultHandler2

public DefaultHandler2()
建構忽略所有解析事件的處理程序。

方法詳細資訊

startCDATA

public void startCDATA()
                throws SAXException
從介面 LexicalHandler 複製的描述
報告 CDATA 節的開始。

通過常規 characters 事件報告 CDATA 節的內容;此事件僅用於報告邊界。

指定者:
介面 LexicalHandler 中的 startCDATA
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.endCDATA()

endCDATA

public void endCDATA()
              throws SAXException
從介面 LexicalHandler 複製的描述
報告 CDATA 節的結束。

指定者:
介面 LexicalHandler 中的 endCDATA
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.startCDATA()

startDTD

public void startDTD(String name,
                     String publicId,
                     String systemId)
              throws SAXException
從介面 LexicalHandler 複製的描述
報告 DTD 宣告的開始(如果存在)。

此方法主要用於報告 DOCTYPE 宣告的開始;如果文檔沒有任何 DOCTYPE 宣告,則不調用此方法。

通過 DTDHandlerDeclHandler 事件報告的所有宣告必須在 startDTD 和 endDTD 事件之間出現。可以假設宣告屬於內部 DTD 子集,除非它們在 startEntityendEntity 事件之間出現。也應該在 startDTD 和 endDTD 事件之間,以事件出現的原始順序(邏輯)報告 DTD 的註釋和處理指令;但是,它們不需要出現在相對於 DTDHandler 或 DeclHandler 事件的正確位置。

注意,start/endDTD 事件將出現在 ContentHandler 的 start/endDocument 事件中,並在第一個 startElement 事件之前。

指定者:
介面 LexicalHandler 中的 startDTD
參數:
name - 文檔型別名稱。
publicId - 用於外部 DTD 子集的已宣告的公共標識符,如果沒有宣告,則為 null。
systemId - 用於外部 DTD 子集的已宣告的系統公共標識符,如果沒有宣告,則為 null。(注意,這不能根據文檔基 URI 解析)
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.endDTD(), LexicalHandler.startEntity(java.lang.String)

endDTD

public void endDTD()
            throws SAXException
從介面 LexicalHandler 複製的描述
報告 DTD 宣告的結束。

此方法主要用於報告 DOCTYPE 宣告的結束;如果文檔沒有任何 DOCTYPE 宣告,則不調用此方法。

指定者:
介面 LexicalHandler 中的 endDTD
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)

startEntity

public void startEntity(String name)
                 throws SAXException
從介面 LexicalHandler 複製的描述
報告一些內部和外部 XML 實體的開始。

參數實體(包括外部 DTD 子集)的報告是可選的,報告 LexicalHandler 事件的 SAX2 驅動程序不能實作它;可以使用 http://xml.org/sax/features/lexical-handler/parameter-entities 功能查詢或控制參數實體的報告。

使用其正規名稱報告常規實體,參數實體具有置於其名稱前的 "%",並且外部 DTD 子集具有偽實體名 "[dtd]"。

在 SAX2 驅動程序提供這些事件時,所有其他事件必須在開始/結束實體事件中正確巢狀。不存在對來自 DeclHandlerDTDHandler 的事件進行正確排序的 附加要求。

注意,跳過的實體將通過 skippedEntity 事件(是 ContentHandler 介面的一部分)報告。

由於 SAX 使用的串流事件模型,不能在任何環境下報告某些實體邊界:

將預設擴展上述實體,而不指示原始實體邊界的位置。

還要注意,不報告字元參考(實際上它不是實體)的邊界。

必須正確巢狀所有 start/endEntity 事件。

指定者:
介面 LexicalHandler 中的 startEntity
參數:
name - 實體的名稱。如果是參數實體,則名稱將以 "%" 開頭,如果是外部 DTD 子集,則將是 "[dtd]"。
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.endEntity(java.lang.String), DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)

endEntity

public void endEntity(String name)
               throws SAXException
從介面 LexicalHandler 複製的描述
報告實體的結束。

指定者:
介面 LexicalHandler 中的 endEntity
參數:
name - 正在結束的實體名稱。
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
LexicalHandler.startEntity(java.lang.String)

comment

public void comment(char[] ch,
                    int start,
                    int length)
             throws SAXException
從介面 LexicalHandler 複製的描述
報告文檔的任何位置的 XML 註釋。

此回調將用於文檔元素內外的註釋,包括外部 DTD 子集中的註釋(如果讀取)。必須在 start/endDTD 和 start/endEntity 事件內部正確巢狀 DTD 中的註釋(如果已使用)。

指定者:
介面 LexicalHandler 中的 comment
參數:
ch - 保存註釋中的字元的陣列。
start - 陣列中的開始位置。
length - 使用的陣列中的字元數。
拋出:
SAXException - 應用程序可能引發一個異常。

attributeDecl

public void attributeDecl(String eName,
                          String aName,
                          String type,
                          String mode,
                          String value)
                   throws SAXException
從介面 DeclHandler 複製的描述
報告屬性型別宣告。

將僅報告屬性的有效(第一個)宣告。型別將是以下字元串之一:"CDATA"、"ID"、"IDREF"、"IDREFS"、"NMTOKEN"、"NMTOKENS"、"ENTITY"、"ENTITIES"、移除所有空格的帶有分隔符 "|" 的加上括號的標記組,或後跟一個空格再跟隨移除所有空白的加上括號的標記組的單詞 "NOTATION"。

值將是報告給應用程序、被適當標準化的值,它帶有實體和擴展的字元參考。

指定者:
介面 DeclHandler 中的 attributeDecl
參數:
eName - 關聯元素的名稱。
aName - 屬性的名稱。
type - 表示屬性型別的字元串。
mode - 表示屬性預設網要("#IMPLIED"、"#REQUIRED" 或 "#FIXED")的字元串,如果不應用上述網要,則為 null。
value - 表示屬性的預設值的字元串,如果不存在,則為 null。
拋出:
SAXException - 應用程序可能引發一個異常。

elementDecl

public void elementDecl(String name,
                        String model)
                 throws SAXException
從介面 DeclHandler 複製的描述
報告元素型別宣告。

內容模型將由字元串 "EMPTY"、字元串 "ANY" 或用括號括起來的組組成,可以選擇後面跟隨一個出現指示符。將使模型標準化,以便完全解析所有的參數實體,並移除所有的空白,並將包括括號。其他標準化(例如,移除多餘的括號或簡化出現指示符)是由解析器決定的。

指定者:
介面 DeclHandler 中的 elementDecl
參數:
name - 元素型別名稱。
model - 作為標準化字元串的內容模型。
拋出:
SAXException - 應用程序可能引發一個異常。

externalEntityDecl

public void externalEntityDecl(String name,
                               String publicId,
                               String systemId)
                        throws SAXException
從介面 DeclHandler 複製的描述
報告解析的外部實體宣告。

將僅報告每個實體的有效(第一個)宣告。

如果系統標識符是 URL,則解析器必須在將它傳遞給應用程序之前完全解析它。

指定者:
介面 DeclHandler 中的 externalEntityDecl
參數:
name - 實體的名稱。如果是參數實體,則名稱以 "%" 開頭。
publicId - 實體的公共標識符,如果沒有給定,則為 null。
systemId - 實體的系統標識符。
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

internalEntityDecl

public void internalEntityDecl(String name,
                               String value)
                        throws SAXException
從介面 DeclHandler 複製的描述
報告內部實體宣告。

將僅報告每個實體的有效(第一個)宣告。將擴展值中的所有參數實體,但不擴展常規實體。

指定者:
介面 DeclHandler 中的 internalEntityDecl
參數:
name - 實體的名稱。如果是參數實體,則名稱以 "%" 開頭。
value - 實體的替換文本。
拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

getExternalSubset

public InputSource getExternalSubset(String name,
                                     String baseURI)
                              throws SAXException,
                                     IOException
告知解析器如果在文檔文本中沒有宣告任何外部子集,則不應使用任何外部子集。

指定者:
介面 EntityResolver2 中的 getExternalSubset
參數:
name - 標識文檔根元素。此名稱來自 DOCTYPE 宣告(如果可用),或來自實際的根元素。
baseURI - 文檔的基 URI,充當選擇外部子集的附加提示。這總是一個絕對 URI,除非由於向 XMLReader 提供了一個不帶 URI 的 InputSource 而使它為 null 時。
返回:
描述解析器使用的新外部子集的 InputSource 物件,或指示不提供任何外部子集的 null。
拋出:
SAXException - 任何 SAX 異常,可能包裹另外的異常。
IOException - 可能指示創建新的 InputStream 或 Reader 失敗,或非法 URL。

resolveEntity

public InputSource resolveEntity(String name,
                                 String publicId,
                                 String baseURI,
                                 String systemId)
                          throws SAXException,
                                 IOException
告知解析器根據 baseURI 解析 systemId,並從產生的絕對 URI 讀取實體文本。注意,因為是覆寫舊的 DefaultHandler.resolveEntity() 方法以調用此方法,所以有時可以使用 null 名稱baseURI 以及已經絕對化的 systemId 調用此方法。

指定者:
介面 EntityResolver2 中的 resolveEntity
參數:
name - 標識正被解析的外部實體。外部子集的 "[dtd]",或者以 "%" 開頭用來指示參數實體的名稱,或者常規實體的名稱。在由 SAX2 解析器調用時,它永不能為 null。
publicId - 被參考的外部實體的公共標識符(按照 XML 規範的要求標準化),如果不提供任何內容,則為 null。
baseURI - 關於解釋哪個相對 systemID 的 URI。這總是一個絕對 URI,除非它為 null(可能因為向 XMLReader 提供了一個不帶 URI 的 InputSource)。XML 規範定義了此 URI,它是與開始相關宣告的 "<" 相關聯的 URI。
systemId - 參考的外部實體的系統標識符;相對 URI 或絕對 URI。由 SAX2 解析器調用時,它從不能為 null;此類別解析器僅解析宣告的實體和任何外部子集。
返回:
描述解析器使用的新輸入源的 InputSource 物件。返回 null 指示解析器基於基 URI 解析系統 ID,並打開到產生的 URI 的連接。
拋出:
SAXException - 任何 SAX 異常,可能包裹另外的異常。
IOException - 可能指示創建新的 InputStream 或 Reader 失敗,或非法 URL。

resolveEntity

public InputSource resolveEntity(String publicId,
                                 String systemId)
                          throws SAXException,
                                 IOException
使用 null 實體名稱和基 URI 調用 EntityResolver2.resolveEntity()。為使用此類別,只需覆寫該方法。

指定者:
介面 EntityResolver 中的 resolveEntity
覆寫:
類別 DefaultHandler 中的 resolveEntity
參數:
publicId - 公共標識符,如果沒有可用的,則為 null。
systemId - 在 XML 文檔中提供的系統標識符。
返回:
新的輸入源,或返回 null,以要求預設的行為。
拋出:
SAXException - 任何 SAX 異常,可能包裹另外的異常。
IOException - 特定於 Java 的 IO 異常,可能是由於為 InputSource 創建新的 InputStream 或 Reader 所導致的。
另請參見:
EntityResolver.resolveEntity(java.lang.String, java.lang.String)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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