JavaTM 2 Platform
Standard Ed. 6

javax.swing.text.html
類別 HTMLDocument.HTMLReader

java.lang.Object
  繼承者 javax.swing.text.html.HTMLEditorKit.ParserCallback
      繼承者 javax.swing.text.html.HTMLDocument.HTMLReader
正在封閉類別:
HTMLDocument

public class HTMLDocument.HTMLReader
extends HTMLEditorKit.ParserCallback

一個 HTML reader,用來載入具有 HTML 元素結構的 HTML 文檔。這是一個從解析器的回調集合,實作的目的是為了創建用屬性標記的元素集合。該解析建構用於描述所需元素子階層樹的標記(ElementSpec),並使用文檔外部類別的插入方法以突發的形式將其插入處於寫入鎖定保護的文檔中。

reader 可以由註冊的動作(型別為 HTMLDocument.HTMLReader.TagAction)來配置,該註冊動作描述了如何處理動作。提供動作的意義在於,如果元素結構歸結為其中具有某種樣式的段落,則可以提供最自然的文本編輯操作。某些方面是更自然地從結構上指定的,因此應該允許段落具有任意結構,但需要用結構化動作來編輯它們。這裡的含意在於,某些正在被解析的串流中所指定的 HTML 元素將被折疊到屬性中,並且在某些情況下將合成各個段落。當已經將 HTML 元素轉換為屬性時,屬性鍵將為 HTML.Tag 型別,並且值將為 AttributeSet 型別,以便不丟失任何資訊。這使許多現有動作得以工作,以便使用者可以鍵入輸入,單擊回車(Enter)鍵、退格鍵、刪除鍵等等,並得到正確的結果。可以創建選項,應用或移除屬性等等。考慮這點,reader 所做的工作可以分為以下幾類別任務:

建構類似於它在串流中被指定的結構。這產生包含其他元素的元素。
段落
類似於塊,區別在於我們期望元素可用於段落視圖,這樣就不必合成段落元素。
字元
作為屬性的元素,它可以在任意文本位置開始和停止。這最終被混合到文本的運行中,帶有所有當前變平的 HTML 字元元素。
特殊的
產生嵌入式圖形元素。
表單
產生類似於嵌入式圖形元素的元素,區別在於它還帶有與其關聯的元件模型。
隱藏的
創建元素,當以只讀方式查看文檔時,此元素在視圖中是隱藏的,編輯文檔時,此元素是可見的。這可用於保持模型不丟失資訊,並用於存儲諸如註釋和未識別標記等此類別資訊。

目前不支持 <APPLET>、<PARAM>、<MAP>、<AREA>、<LINK>、<SCRIPT> 和 <STYLE>。

下表顯示了為 HTML.Tag 中定義的標記所分派的動作。

標記動作
HTML.Tag.A CharacterAction
HTML.Tag.ADDRESS CharacterAction
HTML.Tag.APPLET HiddenAction
HTML.Tag.AREA AreaAction
HTML.Tag.B CharacterAction
HTML.Tag.BASE BaseAction
HTML.Tag.BASEFONT CharacterAction
HTML.Tag.BIG CharacterAction
HTML.Tag.BLOCKQUOTEBlockAction
HTML.Tag.BODY BlockAction
HTML.Tag.BR SpecialAction
HTML.Tag.CAPTION BlockAction
HTML.Tag.CENTER BlockAction
HTML.Tag.CITE CharacterAction
HTML.Tag.CODE CharacterAction
HTML.Tag.DD BlockAction
HTML.Tag.DFN CharacterAction
HTML.Tag.DIR BlockAction
HTML.Tag.DIV BlockAction
HTML.Tag.DL BlockAction
HTML.Tag.DT ParagraphAction
HTML.Tag.EM CharacterAction
HTML.Tag.FONT CharacterAction
HTML.Tag.FORM 從 1.4 版本開始,為 BlockAction
HTML.Tag.FRAME SpecialAction
HTML.Tag.FRAMESET BlockAction
HTML.Tag.H1 ParagraphAction
HTML.Tag.H2 ParagraphAction
HTML.Tag.H3 ParagraphAction
HTML.Tag.H4 ParagraphAction
HTML.Tag.H5 ParagraphAction
HTML.Tag.H6 ParagraphAction
HTML.Tag.HEAD HeadAction
HTML.Tag.HR SpecialAction
HTML.Tag.HTML BlockAction
HTML.Tag.I CharacterAction
HTML.Tag.IMG SpecialAction
HTML.Tag.INPUT FormAction
HTML.Tag.ISINDEX IsndexAction
HTML.Tag.KBD CharacterAction
HTML.Tag.LI BlockAction
HTML.Tag.LINK LinkAction
HTML.Tag.MAP MapAction
HTML.Tag.MENU BlockAction
HTML.Tag.META MetaAction
HTML.Tag.NOFRAMES BlockAction
HTML.Tag.OBJECT SpecialAction
HTML.Tag.OL BlockAction
HTML.Tag.OPTION FormAction
HTML.Tag.P ParagraphAction
HTML.Tag.PARAM HiddenAction
HTML.Tag.PRE PreAction
HTML.Tag.SAMP CharacterAction
HTML.Tag.SCRIPT HiddenAction
HTML.Tag.SELECT FormAction
HTML.Tag.SMALL CharacterAction
HTML.Tag.STRIKE CharacterAction
HTML.Tag.S CharacterAction
HTML.Tag.STRONG CharacterAction
HTML.Tag.STYLE StyleAction
HTML.Tag.SUB CharacterAction
HTML.Tag.SUP CharacterAction
HTML.Tag.TABLE BlockAction
HTML.Tag.TD BlockAction
HTML.Tag.TEXTAREA FormAction
HTML.Tag.TH BlockAction
HTML.Tag.TITLE TitleAction
HTML.Tag.TR BlockAction
HTML.Tag.TT CharacterAction
HTML.Tag.U CharacterAction
HTML.Tag.UL BlockAction
HTML.Tag.VAR CharacterAction

一旦遇到 </html>,則不再通知 Action。


巢狀類別摘要
 class HTMLDocument.HTMLReader.BlockAction
           
 class HTMLDocument.HTMLReader.CharacterAction
           
 class HTMLDocument.HTMLReader.FormAction
          此動作通過建構所有用於表示表單控制元件的元素來支持表單。
 class HTMLDocument.HTMLReader.HiddenAction
           
 class HTMLDocument.HTMLReader.IsindexAction
           
 class HTMLDocument.HTMLReader.ParagraphAction
           
 class HTMLDocument.HTMLReader.PreAction
           
 class HTMLDocument.HTMLReader.SpecialAction
           
 class HTMLDocument.HTMLReader.TagAction
          為回應對標記的解析而執行的動作。
 
欄位摘要
protected  MutableAttributeSet charAttr
           
protected  Vector<DefaultStyledDocument.ElementSpec> parseBuffer
           
 
從類別 javax.swing.text.html.HTMLEditorKit.ParserCallback 繼承的欄位
IMPLIED
 
建構子摘要
HTMLDocument.HTMLReader(int offset)
           
HTMLDocument.HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag)
           
 
方法摘要
protected  void addContent(char[] data, int offs, int length)
          添加某個具有當前字元屬性的文本。
protected  void addContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary)
          添加某個具有當前字元屬性的文本。
protected  void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
          添加基本上完全是在屬性集中指定的內容。
protected  void blockClose(HTML.Tag t)
          向解析器緩衝區添加一條指令,以關閉給定型別的塊元素。
protected  void blockOpen(HTML.Tag t, MutableAttributeSet attr)
          向解析器緩衝區添加一條指令,以創建具有給定屬性的塊元素。
 void flush()
          在 reader 上調用的最後一個方法。
 void handleComment(char[] data, int pos)
           
 void handleEndOfLineString(String eol)
          它的調用是在完成串流的解析之後且在調用 flush 之前。
 void handleEndTag(HTML.Tag t, int pos)
          從解析器回調。
 void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos)
          從解析器回調。
 void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
          從解析器回調。
 void handleText(char[] data, int pos)
          解析器調用它來指示遇到一個文本塊。
protected  void popCharacterStyle()
          將以前壓入堆疊(stack)空間的字元樣式彈出,以返回以前的樣式。
protected  void preContent(char[] data)
          添加在 PRE 元素中遇到的給定內容。
protected  void pushCharacterStyle()
          將當前字元樣式壓入堆疊(stack)空間,以準備形成新的巢狀字元樣式。
protected  void registerTag(HTML.Tag t, HTMLDocument.HTMLReader.TagAction a)
          註冊給定標記的處理程序。
protected  void textAreaContent(char[] data)
          將給定的內容添加到 textarea 文檔。
 
從類別 javax.swing.text.html.HTMLEditorKit.ParserCallback 繼承的方法
handleError
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

parseBuffer

protected Vector<DefaultStyledDocument.ElementSpec> parseBuffer

charAttr

protected MutableAttributeSet charAttr
建構子詳細資訊

HTMLDocument.HTMLReader

public HTMLDocument.HTMLReader(int offset)

HTMLDocument.HTMLReader

public HTMLDocument.HTMLReader(int offset,
                               int popDepth,
                               int pushDepth,
                               HTML.Tag insertTag)
方法詳細資訊

flush

public void flush()
           throws BadLocationException
在 reader 上調用的最後一個方法。它允許將任何掛起的更改刷新到文檔中。因為當前這是同步載入的,所以此時會壓入整個更改的集合。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 flush
拋出:
BadLocationException

handleText

public void handleText(char[] data,
                       int pos)
解析器調用它來指示遇到一個文本塊。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleText

handleStartTag

public void handleStartTag(HTML.Tag t,
                           MutableAttributeSet a,
                           int pos)
從解析器回調。路由到適當的標記處理程序。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleStartTag

handleComment

public void handleComment(char[] data,
                          int pos)
覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleComment

handleEndTag

public void handleEndTag(HTML.Tag t,
                         int pos)
從解析器回調。路由到適當的標記處理程序。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleEndTag

handleSimpleTag

public void handleSimpleTag(HTML.Tag t,
                            MutableAttributeSet a,
                            int pos)
從解析器回調。路由到適當的標記處理程序。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleSimpleTag

handleEndOfLineString

public void handleEndOfLineString(String eol)
它的調用是在完成串流的解析之後且在調用 flush 之前。eol 將是 \n、\r 或 \r\n 中的一個,它是在解析串流時最常遇到的。

覆寫:
類別 HTMLEditorKit.ParserCallback 中的 handleEndOfLineString
從以下版本開始:
1.3

registerTag

protected void registerTag(HTML.Tag t,
                           HTMLDocument.HTMLReader.TagAction a)
註冊給定標記的處理程序。預設情況下所有已知的標記是已註冊的。這可以用於更改特殊標記的處理,或者添加對自定義標記的支持。


pushCharacterStyle

protected void pushCharacterStyle()
將當前字元樣式壓入堆疊(stack)空間,以準備形成新的巢狀字元樣式。


popCharacterStyle

protected void popCharacterStyle()
將以前壓入堆疊(stack)空間的字元樣式彈出,以返回以前的樣式。


textAreaContent

protected void textAreaContent(char[] data)
將給定的內容添加到 textarea 文檔。處於 textarea 上下文中時調用此方法。因此,所有看到的文本均屬於文本區,並因此添加到與該文本區關聯的 TextAreaDocument 中。


preContent

protected void preContent(char[] data)
添加在 PRE 元素中遇到的給定內容。此方法合成行以保持文本的運行,並調用 addContent 來實際添加文本。


blockOpen

protected void blockOpen(HTML.Tag t,
                         MutableAttributeSet attr)
向解析器緩衝區添加一條指令,以創建具有給定屬性的塊元素。


blockClose

protected void blockClose(HTML.Tag t)
向解析器緩衝區添加一條指令,以關閉給定型別的塊元素。


addContent

protected void addContent(char[] data,
                          int offs,
                          int length)
添加某個具有當前字元屬性的文本。

參數:
data - 要添加的內容
offs - 初始偏移量
length - 長度

addContent

protected void addContent(char[] data,
                          int offs,
                          int length,
                          boolean generateImpliedPIfNecessary)
添加某個具有當前字元屬性的文本。

參數:
data - 要添加的內容
offs - 初始偏移量
length - 長度
generateImpliedPIfNecessary - 是否產生隱含段

addSpecialElement

protected void addSpecialElement(HTML.Tag t,
                                 MutableAttributeSet a)
添加基本上完全是在屬性集中指定的內容。


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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