java.lang.Object
javax.swing.text.html.parser.Parser
- 所有已实现的接口:
DTDConstants
- 已知子类:
DocumentParser
一个简单的 DTD 驱动的 HTML 解析器。解析器从 InputStream 读取 HTML 文件,并在遇到标记和数据时调用各种方法(应在子类中重写这些方法)。
不幸的是,有许多 HTML 解析器实现不佳,结果导致许多 HTML 文件格式不正确。此解析器尝试解析大多数 HTML 文件。这意味着实现有时会偏离支持 HTML 的 SGML 规范。
解析器将 \r 和 \r\n 视为 \n。正如 SGML/HTML 规范中指定的那样,starttags 之后和结束标记之前的换行符将被忽略。
html 规范没有指定如何很好地合并空间。具体有以下几种场景不讨论(注意这里要用空格,不过我是用 强制显示空格):
'<b>blah <i> <strike> foo' 可以被视为: '<b>blah <i><strike>foo'
以及:'<p><a href="xx"> <em>Using</em></a></p>' 似乎被视为:'<p><a href="xx "<em>正在使用</em></a></p>'
如果 strict
为 false,当遇到中断流的标记 (TagElement.breaksFlows
) 或尾随空格时,将忽略所有空格,直到遇到非空格字符。这似乎使行为更接近流行的浏览器。
- 参见:
-
字段摘要
字段在接口 javax.swing.text.html.parser.DTDConstants 中声明的字段
ANY, CDATA, CONREF, CURRENT, DEFAULT, EMPTY, ENDTAG, ENTITIES, ENTITY, FIXED, GENERAL, ID, IDREF, IDREFS, IMPLIED, MD, MODEL, MS, NAME, NAMES, NMTOKEN, NMTOKENS, NOTATION, NUMBER, NUMBERS, NUTOKEN, NUTOKENS, PARAMETER, PI, PUBLIC, RCDATA, REQUIRED, SDATA, STARTTAG, SYSTEM
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述protected void
endTag
(boolean omitted) 处理结束标记。protected void
使用第一个、第二个和第三个错误消息参数“?”调用错误处理程序。protected void
使用第二个和第三个错误消息参数“?”调用错误处理程序。protected void
使用第三个错误消息参数“?”调用错误处理程序。protected void
调用错误处理程序。protected void
删除当前属性。protected SimpleAttributeSet
返回当前标签的属性。protected int
返回当前正在解析的行的行号。protected int
返回当前位置。protected void
handleComment
(char[] text) 遇到 HTML 注释时调用。protected void
handleEmptyTag
(TagElement tag) 遇到空标记时调用。protected void
handleEndTag
(TagElement tag) 遇到结束标记时调用。protected void
当内容终止但未关闭 HTML 注释时调用。protected void
handleError
(int ln, String msg) 发生了错误。protected void
handleStartTag
(TagElement tag) 遇到开始标记时调用。protected void
handleText
(char[] text) 遇到 PCDATA 时调用。protected void
handleTitle
(char[] text) 遇到 HTML 标题标签时调用。protected TagElement
制作一个 TagElement。protected TagElement
制作一个 TagElement。protected void
markFirstTime
(Element elem) 标记第一次在文档中看到标签void
在给定 DTD 的情况下解析 HTML 流。解析文档类型声明标记声明。protected boolean
parseMarkupDeclarations
(StringBuffer strBuff) 解析标记声明。protected void
startTag
(TagElement tag) 处理开始标记。
-
字段详细信息
-
dtd
dtd。 -
strict
protected boolean strict该标志确定解析器是否严格执行 SGML 兼容性。如果为 false,它将对某些常见的错误 HTML 构造类宽容。严格与否,在任何一种情况下都会记录错误。
-
-
构造方法详细信息
-
Parser
使用指定的dtd
创建解析器。- 参数:
dtd
- dtd。
-
-
方法详情
-
getCurrentLine
protected int getCurrentLine()返回当前正在解析的行的行号。- 返回:
- 当前正在解析的行的行号
-
makeTag
制作一个 TagElement。- 参数:
elem
- 存储标签定义的元素fictional
- 要为标签设置的标志“fictional
”的值- 返回:
-
创建的
TagElement
-
makeTag
制作一个 TagElement。- 参数:
elem
- 存储标签定义的元素- 返回:
-
创建的
TagElement
-
getAttributes
返回当前标签的属性。- 返回:
SimpleAttributeSet
包含属性
-
flushAttributes
protected void flushAttributes()删除当前属性。 -
handleText
protected void handleText(char[] text) 遇到 PCDATA 时调用。- 参数:
text
- 部分文本
-
handleTitle
protected void handleTitle(char[] text) 遇到 HTML 标题标签时调用。- 参数:
text
- 标题文本
-
handleComment
protected void handleComment(char[] text) 遇到 HTML 注释时调用。- 参数:
text
- 正在处理的评论
-
handleEOFInComment
protected void handleEOFInComment()当内容终止但未关闭 HTML 注释时调用。 -
handleEmptyTag
遇到空标记时调用。- 参数:
tag
- 正在处理的标签- 抛出:
ChangedCharSetException
- 如果文档字符集已更改
-
handleStartTag
遇到开始标记时调用。- 参数:
tag
- 正在处理的标签
-
handleEndTag
遇到结束标记时调用。- 参数:
tag
- 正在处理的标签
-
handleError
发生了错误。- 参数:
ln
- 包含错误的行数msg
- 错误信息
-
error
调用错误处理程序。- 参数:
err
- 错误类型arg1
- 第一个错误消息参数arg2
- 第二个错误消息参数arg3
- 第三个错误消息参数
-
error
使用第三个错误消息参数“?”调用错误处理程序。- 参数:
err
- 错误类型arg1
- 第一个错误消息参数arg2
- 第二个错误消息参数
-
error
使用第二个和第三个错误消息参数“?”调用错误处理程序。- 参数:
err
- 错误类型arg1
- 第一个错误消息参数
-
error
使用第一个、第二个和第三个错误消息参数“?”调用错误处理程序。- 参数:
err
- 错误类型
-
startTag
处理开始标记。新标签被压入标签栈。检查属性列表以查找所需的属性。- 参数:
tag
- 标签- 抛出:
ChangedCharSetException
- 如果文档字符集已更改
-
endTag
protected void endTag(boolean omitted) 处理结束标记。结束标签从标签栈中弹出。- 参数:
omitted
-true
如果标签实际不存在于文档中,但解析器假定
-
markFirstTime
标记第一次在文档中看到标签- 参数:
elem
- 标签代表的元素
-
parseDTDMarkup
解析文档类型声明标记声明。目前忽略它。- 返回:
- 标记声明的字符串表示形式
- 抛出:
IOException
- 如果发生 I/O 错误
-
parseMarkupDeclarations
解析标记声明。目前仅处理文档类型声明标记。如果它是标记声明则返回 true,否则返回 false。- 参数:
strBuff
- 标记声明- 返回:
true
如果这是一个有效的标记声明;否则false
- 抛出:
IOException
- 如果发生 I/O 错误
-
parse
在给定 DTD 的情况下解析 HTML 流。- 参数:
in
- 从中读取源代码的读者- 抛出:
IOException
- 如果发生 I/O 错误
-
getCurrentPos
protected int getCurrentPos()返回当前位置。- 返回:
- 当前位置
-