模块  java.desktop
软件包  javax.swing.text.html

Class HTMLDocument.HTMLReader

  • Enclosing class:
    HTMLDocument

    public class HTMLDocument.HTMLReaderextends HTMLEditorKit.ParserCallback
    用于加载带有HTML元素结构的HTML文档的HTML阅读器。 这是来自解析器的一组回调,用于创建一组标记有属性的元素。 解析构建了描述所需元素子树的令牌(ElementSpec),并使用文档外部类上的insert方法在写锁的保护下将其突发到文档中。

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

    构建流中指定的结构。 这会生成包含其他元素的元素。
    与块一样,除了预期元素将与段落视图一起使用,因此不需要合成段落元素。
    字符
    将元素作为将在任意文本位置开始和停止的属性进行贡献。 这将最终混合到一系列文本中,包含所有当前展平的HTML字符元素。
    特别
    生成嵌入式图形元素。
    形成
    生成一个类似于嵌入式图形元素的元素,除了它还有一个与之关联的组件模型。
    创建一个在以只读方式查看文档时从视图中隐藏的元素,并在编辑文档时可见。 这有助于防止模型丢失信息,并用于存储注释和无法识别的标记等内容。

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

    对于HTML.Tag定义的标记,下表显示了所描述的操作的分配。

    HTML tags and assigned actions Tag 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 As of 1.4 a 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>后,不再通知操作。

    • 构造方法详细信息

      • HTMLReader

        public HTMLReader​(int offset)
        使用默认弹出和推送深度构造HTMLReader,不插入任何标记。
        参数
        offset - 起始偏移量
      • HTMLReader

        public HTMLReader​(int offset,                  int popDepth,                  int pushDepth,                  HTML.Tag insertTag)
        构造一个HTMLReader。
        参数
        offset - 起始偏移量
        popDepth - 在插入新元素之前要提升多少个父母
        pushDepth - 插入前要下降多少个父亲(相对于popDepth)
        insertTag - 要插入的标记(可以为null)
    • 方法详细信息

      • handleText

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

        public void handleEndOfLineString​(String eol)
        在解析流之后但在flush之前flush eol将是\ n,\ r或\ r \ n之一,它在解析流时遇到的最多。
        重写:
        handleEndOfLineString ,类 HTMLEditorKit.ParserCallback
        参数
        eol - 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)
        将给定内容添加到textarea文档中。 当我们处于textarea上下文时,会调用此方法。 因此,所有看到的文本都属于文本区域,因此被添加到与文本区域关联的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 - the attribute set