|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface LexicalHandler
用於詞法事件的 SAX2 擴展處理程序。
此模組(包括源程式碼和文檔)在公共域中,同時 沒有擔保。有關更多資訊,請參閱http://www.saxproject.org。
這是 SAX2 的可選擴展處理程序,以提供關於 XML 文檔的詞彙資訊,例如,註釋和 CDATA 節邊界。不需要 XML 閱讀器識別此處理程序,它不是僅核心 SAX2 分發的一部分。
詞彙處理程序中的事件應用於整個文檔,不是僅應用於文檔元素,並且所有詞彙處理程序事件必須在內容處理程序的 startDocument 和 endDocument 事件之間出現。
要為 XML 閱讀器設置 LexicalHandler,使用帶有屬性名稱 http://xml.org/sax/properties/lexical-handler
的 setProperty
方法以及將此介面(或 null)實作為該值的物件。如果閱讀器不報告詞彙事件,則嘗試註冊處理程序時,它將拋出 SAXNotRecognizedException
。
方法摘要 | |
---|---|
void |
comment(char[] ch,
int start,
int length)
報告文檔的任何位置的 XML 註釋。 |
void |
endCDATA()
報告 CDATA 節的結束。 |
void |
endDTD()
報告 DTD 宣告的結束。 |
void |
endEntity(String name)
報告實體的結束。 |
void |
startCDATA()
報告 CDATA 節的開始。 |
void |
startDTD(String name,
String publicId,
String systemId)
報告 DTD 宣告的開始(如果存在)。 |
void |
startEntity(String name)
報告一些內部和外部 XML 實體的開始。 |
方法詳細資訊 |
---|
void startDTD(String name, String publicId, String systemId) throws SAXException
此方法主要用於報告 DOCTYPE 宣告的開始;如果文檔沒有任何 DOCTYPE 宣告,則不調用此方法。
通過 DTDHandler
或 DeclHandler
事件報告的所有宣告必須在 startDTD 和 endDTD
事件之間出現。可以假設宣告屬於內部 DTD 子集,除非它們在 startEntity
和 endEntity
事件之間出現。也應該在 startDTD 和 endDTD 事件之間,以事件出現的原始順序(邏輯)報告 DTD 的註釋和處理指令;但是,它們不需要出現在相對於 DTDHandler 或 DeclHandler 事件的正確位置。
注意,start/endDTD 事件將出現在 ContentHandler 的 start/endDocument 事件中,並在第一個 startElement
事件之前。
name
- 文檔型別名稱。publicId
- 用於外部 DTD 子集的已宣告的公共標識符,如果沒有宣告,則為 null。systemId
- 用於外部 DTD 子集的已宣告的系統公共標識符,如果沒有宣告,則為 null。(注意,這不能根據文檔基 URI 解析)
SAXException
- 應用程序可能引發一個異常。endDTD()
,
startEntity(java.lang.String)
void endDTD() throws SAXException
此方法主要用於報告 DOCTYPE 宣告的結束;如果文檔沒有任何 DOCTYPE 宣告,則不調用此方法。
SAXException
- 應用程序可能引發一個異常。startDTD(java.lang.String, java.lang.String, java.lang.String)
void startEntity(String name) throws SAXException
參數實體(包括外部 DTD 子集)的報告是可選的,報告 LexicalHandler 事件的 SAX2 驅動程序不能實作它;可以使用 http://xml.org/sax/features/lexical-handler/parameter-entities
功能查詢或控制參數實體的報告。
使用其正規名稱報告常規實體,參數實體具有置於其名稱前的 "%",並且外部 DTD 子集具有偽實體名 "[dtd]"。
在 SAX2 驅動程序提供這些事件時,所有其他事件必須在開始/結束實體事件中正確巢狀。不存在對來自 DeclHandler
或 DTDHandler
的事件進行正確排序的 附加要求。
注意,跳過的實體將通過 skippedEntity
事件(是 ContentHandler 介面的一部分)報告。
由於 SAX 使用的串流事件模型,不能在任何環境下報告某些實體邊界:
將預設擴展上述實體,而不指示原始實體邊界的位置。
還要注意,不報告字元參考(實際上它不是實體)的邊界。
必須正確巢狀所有 start/endEntity 事件。
name
- 實體的名稱。如果是參數實體,則名稱將以 "%" 開頭,如果是外部 DTD 子集,則將是 "[dtd]"。
SAXException
- 應用程序可能引發一個異常。endEntity(java.lang.String)
,
DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)
,
DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)
void endEntity(String name) throws SAXException
name
- 正在結束的實體名稱。
SAXException
- 應用程序可能引發一個異常。startEntity(java.lang.String)
void startCDATA() throws SAXException
通過常規 characters
事件報告 CDATA 節的內容;此事件僅用於報告邊界。
SAXException
- 應用程序可能引發一個異常。endCDATA()
void endCDATA() throws SAXException
SAXException
- 應用程序可能引發一個異常。startCDATA()
void comment(char[] ch, int start, int length) throws SAXException
此回調將用於文檔元素內外的註釋,包括外部 DTD 子集中的註釋(如果讀取)。必須在 start/endDTD 和 start/endEntity 事件內部正確巢狀 DTD 中的註釋(如果已使用)。
ch
- 保存註釋中的字元的陣列。start
- 陣列中的開始位置。length
- 使用的陣列中的字元數。
SAXException
- 應用程序可能引發一個異常。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。