- java.lang.Object
-
- javax.swing.text.html.HTMLEditorKit.ParserCallback
-
- javax.swing.text.html.HTMLDocument.HTMLReader
-
- Enclosing class:
- HTMLDocument
public class HTMLDocument.HTMLReader extends HTMLEditorKit.ParserCallback
用于加载带有HTML元素结构的HTML文档的HTML阅读器。 这是来自解析器的一组回调,用于创建一组标记有属性的元素。 解析构建了描述所需元素子树的令牌(ElementSpec),并使用文档外部类上的insert方法在写锁的保护下将其突发到文档中。可以通过注册描述如何处理操作的操作(类型
HTMLDocument.HTMLReader.TagAction
)来配置阅读器。 提供的操作背后的想法是,如果元素结构归结为其中包含某种样式的段落的段落,则可以提供最自然的文本编辑操作。 有些东西在结构上更自然地指定,因此应该允许在段落之上使用任意结构,但需要使用结构动作进行编辑。 这意味着在被解析的流中指定的一些HTML元素将被折叠成属性,并且在某些情况下段落将被合成。 当HTML元素已转换为属性时,属性键的类型为HTML.Tag,值的类型为AttributeSet,因此不会丢失任何信息。 这使得许多现有操作能够工作,以便用户可以键入输入,点击返回键,退格键,删除等,并获得合理的结果。 可以创建选择,应用或删除属性等。考虑到这一点,读者完成的工作可以分为以下几类任务:- 块
- 构建流中指定的结构。 这会生成包含其他元素的元素。
- 段
- 与块一样,除了预期元素将与段落视图一起使用,因此不需要合成段落元素。
- 字符
- 将元素作为将在任意文本位置开始和停止的属性进行贡献。 这将最终混合到一系列文本中,包含所有当前展平的HTML字符元素。
- 特别
- 生成嵌入式图形元素。
- 形成
- 生成一个类似于嵌入式图形元素的元素,除了它还有一个与之关联的组件模型。
- 隐
- 创建一个在以只读方式查看文档时从视图中隐藏的元素,并在编辑文档时可见。 这有助于防止模型丢失信息,并用于存储注释和无法识别的标记等内容。
目前,不支持<APPLET>,<PARAM>,<MAP>,<AREA>,<LINK>,<SCRIPT>和<STYLE>。
对于
HTML tags and assigned actions Tag ActionHTML.Tag
定义的标记,下表显示了所描述的操作的分配。HTML.Tag.A
CharacterActionHTML.Tag.ADDRESS
CharacterActionHTML.Tag.APPLET
HiddenActionHTML.Tag.AREA
AreaActionHTML.Tag.B
CharacterActionHTML.Tag.BASE
BaseActionHTML.Tag.BASEFONT
CharacterActionHTML.Tag.BIG
CharacterActionHTML.Tag.BLOCKQUOTE
BlockActionHTML.Tag.BODY
BlockActionHTML.Tag.BR
SpecialActionHTML.Tag.CAPTION
BlockActionHTML.Tag.CENTER
BlockActionHTML.Tag.CITE
CharacterActionHTML.Tag.CODE
CharacterActionHTML.Tag.DD
BlockActionHTML.Tag.DFN
CharacterActionHTML.Tag.DIR
BlockActionHTML.Tag.DIV
BlockActionHTML.Tag.DL
BlockActionHTML.Tag.DT
ParagraphActionHTML.Tag.EM
CharacterActionHTML.Tag.FONT
CharacterActionHTML.Tag.FORM
As of 1.4 a BlockActionHTML.Tag.FRAME
SpecialActionHTML.Tag.FRAMESET
BlockActionHTML.Tag.H1
ParagraphActionHTML.Tag.H2
ParagraphActionHTML.Tag.H3
ParagraphActionHTML.Tag.H4
ParagraphActionHTML.Tag.H5
ParagraphActionHTML.Tag.H6
ParagraphActionHTML.Tag.HEAD
HeadActionHTML.Tag.HR
SpecialActionHTML.Tag.HTML
BlockActionHTML.Tag.I
CharacterActionHTML.Tag.IMG
SpecialActionHTML.Tag.INPUT
FormActionHTML.Tag.ISINDEX
IsndexActionHTML.Tag.KBD
CharacterActionHTML.Tag.LI
BlockActionHTML.Tag.LINK
LinkActionHTML.Tag.MAP
MapActionHTML.Tag.MENU
BlockActionHTML.Tag.META
MetaActionHTML.Tag.NOFRAMES
BlockActionHTML.Tag.OBJECT
SpecialActionHTML.Tag.OL
BlockActionHTML.Tag.OPTION
FormActionHTML.Tag.P
ParagraphActionHTML.Tag.PARAM
HiddenActionHTML.Tag.PRE
PreActionHTML.Tag.SAMP
CharacterActionHTML.Tag.SCRIPT
HiddenActionHTML.Tag.SELECT
FormActionHTML.Tag.SMALL
CharacterActionHTML.Tag.STRIKE
CharacterActionHTML.Tag.S
CharacterActionHTML.Tag.STRONG
CharacterActionHTML.Tag.STYLE
StyleActionHTML.Tag.SUB
CharacterActionHTML.Tag.SUP
CharacterActionHTML.Tag.TABLE
BlockActionHTML.Tag.TD
BlockActionHTML.Tag.TEXTAREA
FormActionHTML.Tag.TH
BlockActionHTML.Tag.TITLE
TitleActionHTML.Tag.TR
BlockActionHTML.Tag.TT
CharacterActionHTML.Tag.U
CharacterActionHTML.Tag.UL
BlockActionHTML.Tag.VAR
CharacterAction遇到</ html>后,不再通知操作。
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 class
HTMLDocument.HTMLReader.BlockAction
默认情况下分配的操作用于处理阅读器的阻止任务。class
HTMLDocument.HTMLReader.CharacterAction
默认情况下分配的操作,用于处理阅读器的“角色”任务。class
HTMLDocument.HTMLReader.FormAction
通过构建用于表示表单控件的所有元素来支持表单的操作。class
HTMLDocument.HTMLReader.HiddenAction
默认情况下分配的操作,用于处理读者的隐藏任务。class
HTMLDocument.HTMLReader.IsindexAction
默认情况下分配的操作,用于处理阅读器的Isindex任务。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
-
-
构造方法摘要
构造方法 构造器 描述 HTMLReader(int offset)
使用默认弹出和推送深度构造HTMLReader,不插入任何标记。HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag)
构造一个HTMLReader。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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()
最后一种方法呼吁读者。void
handleEndOfLineString(String eol)
在解析流之后但在flush
之前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
handleComment, handleError
-
-
-
-
字段详细信息
-
parseBuffer
protected Vector<DefaultStyledDocument.ElementSpec> parseBuffer
缓冲区以保持构建元素。
-
charAttr
protected MutableAttributeSet charAttr
当前字符属性集。
-
-
构造方法详细信息
-
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)
-
-
方法详细信息
-
flush
public void flush() throws BadLocationException
最后一种方法呼吁读者。 它允许将任何挂起的更改刷新到文档中。 由于当前正在同步加载,因此此时会推入整组更改。- 重写:
-
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
之前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
-
-