模块 java.desktop

类 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 阅读器,用于加载具有 HTML 元素结构的 HTML 文档。这是一组来自解析器的回调,用于创建一组标有属性的元素。解析构建描述所需元素子树的标记 (ElementSpec),并使用文档外部类上的插入方法在写锁的保护下将其突发到文档中。

可以通过注册描述如何处理操作的操作(HTMLDocument.HTMLReader.TagAction 类型)来配置阅读器。提供的操作背后的想法是,如果元素结构归结为具有某种样式的段落,则可以提供最自然的文本编辑操作。有些东西在结构上更自然地指定,因此段落上方应允许任意结构,但需要使用结构动作进行编辑。这意味着在被解析的流中指定的一些 HTML 元素将被折叠成属性,在某些情况下段落将被合成。当 HTML 元素转换为属性时,属性键的类型为 HTML.Tag,值的类型为 AttributeSet,这样就不会丢失任何信息。这使得许多现有操作能够正常工作,以便用户可以键入输入、按下返回键、退格键、删除等,并获得合理的结果。可以创建选择,应用或删除属性等。考虑到这一点,读者所做的工作可以分为以下几类任务:

堵塞
像在流中指定的那样构建结构。这会产生包含其他元素的元素。
段落
与 block 一样,除了预期该元素将与段落视图一起使用,因此不需要合成段落元素。
Character
将元素作为属性提供,该属性将在任意文本位置开始和停止。这最终将混合成一系列文本,其中包含所有当前扁平化的 HTML 字符元素。
特别的
生成嵌入式图形元素。
形式
生成一个类似于嵌入式图形元素的元素,除了它还有一个与之关联的组件模型。
创建一个元素,该元素在以只读方式查看文档时不可见,而在编辑文档时可见。这对于防止模型丢失信息很有用,并用于存储评论和无法识别的标签等内容。

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

下表针对 HTML.Tag 中定义的标签显示了所描述操作的分配。

HTML 标记和分配的操作
标签 Action
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.BLOCKQUOTE BlockAction
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>,就不再通知Actions。

  • 字段详细信息

  • 构造方法详细信息

    • 阅读器

      public HTMLReader(int offset)
      使用默认的弹出和推送深度构造一个 HTMLReader 并且没有要插入的标记。
      参数:
      offset - 起始偏移量
    • 阅读器

      public HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag  insertTag)
      构造一个 HTMLReader。
      参数:
      offset - 起始偏移量
      popDepth - 在插入新元素之前提升多少父母
      pushDepth - 在插入之前有多少父母下降(相对于 popDepth)
      insertTag - 要插入的标签(可能为空)
  • 方法详情

    • flush

      public void flush() throws BadLocationException
      最后一个方法调用了 reader。它允许将任何挂起的更改刷新到文档中。由于当前正在同步加载,因此此时将推送整组更改。
      重写:
      flush 在类 HTMLEditorKit.ParserCallback
      抛出:
      BadLocationException - 如果给定位置不代表相关文档中的有效位置。
    • handleText

      public void handleText(char[] data, int pos)
      由解析器调用以指示遇到了一个文本块。
      重写:
      handleText 在类 HTMLEditorKit.ParserCallback
      参数:
      data - 一个数据
      pos - 一个位置
    • handleStartTag

      public void handleStartTag(HTML.Tag  t, MutableAttributeSet  a, int pos)
      来自解析器的回调。路由到标签的适当处理程序。
      重写:
      handleStartTag 在类 HTMLEditorKit.ParserCallback
      参数:
      t - 一个 HTML 标签
      a - 一组属性
      pos - 一个位置
    • handleEndTag

      public void handleEndTag(HTML.Tag  t, int pos)
      来自解析器的回调。路由到标签的适当处理程序。
      重写:
      handleEndTag 在类 HTMLEditorKit.ParserCallback
      参数:
      t - 一个 HTML 标签
      pos - 一个位置
    • handleSimpleTag

      public void handleSimpleTag(HTML.Tag  t, MutableAttributeSet  a, int pos)
      来自解析器的回调。路由到标签的适当处理程序。
      重写:
      handleSimpleTag 在类 HTMLEditorKit.ParserCallback
      参数:
      t - 一个 HTML 标签
      a - 一组属性
      pos - 一个位置
    • handleEndOfLineString

      public void handleEndOfLineString(String  eol)
      这是在流被解析之后但在 flush 之前调用的。 eol 将是 \n、\r 或 \r\n 之一,在解析流时遇到最多。
      重写:
      handleEndOfLineString 在类 HTMLEditorKit.ParserCallback
      参数:
      eol - 终止值
      自从:
      1.3
    • registerTag

      protected void registerTag(HTML.Tag  t, HTMLDocument.HTMLReader.TagAction  a)
      为给定的标签注册一个处理程序。默认情况下,所有众所周知的标签都已注册。这可用于更改特定标签的处理或添加对自定义标签的支持。
      参数:
      t - 一个 HTML 标签
      a - 标记操作处理程序
    • pushCharacterStyle

      protected void pushCharacterStyle()
      将当前字符样式压入堆栈,为形成新的嵌套字符样式做准备。
    • popCharacterStyle

      protected void popCharacterStyle()
      从堆栈中弹出先前推送的字符样式以返回到先前的样式。
    • textAreaContent

      protected void textAreaContent(char[] data)
      将给定的内容添加到文本区域文档。当我们处于文本区域上下文中时,将调用此方法。因此,看到的所有文本都属于文本区域,因此被添加到与文本区域关联的 TextAreaDocument。
      参数:
      data - 给定的内容
    • preContent

      protected void preContent(char[] data)
      添加在 PRE 元素中遇到的给定内容。这会合成行来保存文本的运行,并调用 addContent 来实际添加文本。
      参数:
      data - 给定的内容
    • blockOpen

      protected void blockOpen(HTML.Tag  t, MutableAttributeSet  attr)
      向解析缓冲区添加指令以创建具有给定属性的块元素。
      参数:
      t - 一个 HTML 标签
      attr - 属性集
    • blockClose

      protected void blockClose(HTML.Tag  t)
      向解析缓冲区添加一条指令以关闭给定类型的块元素。
      参数:
      t - HTML 标签
    • 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)
      添加基本上完全在属性集中指定的内容。
      参数:
      t - 一个 HTML 标签
      a - 属性集