JavaTM 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 类型,以便不丢失任何信息。这使许多现有动作得以工作,以便用户可以键入输入,单击回车键、退格键、删除键等等,并得到正确的结果。可以创建选项,应用或移除属性等等。考虑这点,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()
          将以前压入堆栈的字符样式弹出,以返回以前的样式。
protected  void preContent(char[] data)
          添加在 PRE 元素中遇到的给定内容。
protected  void pushCharacterStyle()
          将当前字符样式压入堆栈,以准备形成新的嵌套字符样式。
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()
将当前字符样式压入堆栈,以准备形成新的嵌套字符样式。


popCharacterStyle

protected void popCharacterStyle()
将以前压入堆栈的字符样式弹出,以返回以前的样式。


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 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策