java.lang.Object
javax.swing.text.html.parser.Parser
- 所有已实现的接口:
-
DTDConstants
- 直接已知的子类:
-
DocumentParser
一个简单的DTD驱动的HTML解析器。解析器从InputStream读取HTML文件,并在遇到标签和数据时调用各种方法(应在子类中重写)。
不幸的是,市面上有许多实现不良的HTML解析器,因此有许多格式不良的HTML文件。该解析器尝试解析大多数HTML文件。这意味着实现有时会偏离SGML规范,而更倾向于HTML。
解析器将\r和\r\n视为\n。在开始标签之后和结束标签之前的换行符将被忽略,就像在SGML/HTML规范中指定的那样。
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>Using</em></a></p>'
如果strict
为false,则当遇到中断流的标签(TagElement.breaksFlows
)或尾随空格时,所有空格将被忽略,直到遇到非空格字符。这似乎更接近流行浏览器的行为。
- 参见:
-
Field Summary
Fields declared in interface 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
endTag
(boolean omitted) 处理结束标签。protected void
使用第1、第2和第3个错误消息参数“?”调用错误处理程序。protected void
使用第2和第3个错误消息参数“?”调用错误处理程序。protected void
使用第3个错误消息参数“?”调用错误处理程序。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
解析HTML流,给定一个DTD。解析文档类型声明标记声明。protected boolean
parseMarkupDeclarations
(StringBuffer strBuff) 解析标记声明。protected void
startTag
(TagElement tag) 处理开始标签。
-
Field Details
-
dtd
dtd。 -
strict
protected boolean strict此标志确定解析器是否严格执行SGML兼容性。如果为false,则对某些常见类别的错误HTML结构宽松。无论严格与否,在任何情况下都会记录错误。
-
-
Constructor Details
-
Parser
使用指定的dtd
创建解析器。- 参数:
-
dtd
- dtd。
-
-
Method Details
-
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
- 第1个错误消息参数 -
arg2
- 第2个错误消息参数 -
arg3
- 第3个错误消息参数
-
error
使用第3个错误消息参数“?”调用错误处理程序。- 参数:
-
err
- 错误类型 -
arg1
- 第1个错误消息参数 -
arg2
- 第2个错误消息参数
-
error
使用第2个和第3个错误消息参数“?”调用错误处理程序。- 参数:
-
err
- 错误类型 -
arg1
- 第1个错误消息参数
-
error
使用第1、第2和第3个错误消息参数“?”调用错误处理程序。- 参数:
-
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
解析HTML流,给定一个DTD。- 参数:
-
in
- 用于读取源的读取器 - 抛出:
-
IOException
- 如果发生I/O错误
-
getCurrentPos
protected int getCurrentPos()返回当前位置。- 返回:
- 当前位置
-