- java.lang.Object
-
- javax.swing.text.html.parser.Parser
-
- All Implemented Interfaces:
-
DTDConstants
- 已知直接子类:
-
DocumentParser
public class Parser extends Object implements DTDConstants
一个简单的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>使用</ em> </a> </ p>',这似乎被视为:'<p> <a href =“xx “> <EM>使用</ EM> </A> </ p>”
如果
strict
为false,则当遇到打破流量的标签(TagElement.breaksFlows
)或尾随空格时,所有空格都将被忽略,直到遇到非空白字符为止。 这似乎使行为更接近流行的浏览器。- 另请参见:
-
DTD
,TagElement
,SimpleAttributeSet
-
-
Field Summary
Fields Modifier and Type Field 描述 protected DTD
dtd
该dtd。protected boolean
strict
此标志确定解析器是否将严格执行SGML兼容性。-
Fields inherited from 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
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected void
endTag(boolean omitted)
处理结束标签protected void
error(String err)
使用第1,第2和第3个错误消息参数“?”调用错误处理程序。protected void
error(String err, String arg1)
使用第2和第3个错误消息参数“?”调用错误处理程序。protected void
error(String err, String arg1, String arg2)
使用第三个错误消息参数“?”调用错误处理程序。protected void
error(String err, String arg1, String arg2, String arg3)
调用错误处理程序。protected void
flushAttributes()
删除当前属性。protected SimpleAttributeSet
getAttributes()
返回当前标签的属性。protected int
getCurrentLine()
protected int
getCurrentPos()
返回当前位置。protected void
handleComment(char[] text)
遇到HTML注释时调用。protected void
handleEmptyTag(TagElement tag)
遇到空标签时调用。protected void
handleEndTag(TagElement tag)
当遇到结束标记时调用。protected void
handleEOFInComment()
当内容终止而不关闭HTML注释时调用。protected void
handleError(int ln, String msg)
发生了错误。protected void
handleStartTag(TagElement tag)
遇到开始标签时调用。protected void
handleText(char[] text)
新新新旗新新新旗新新新新旗新新旗新新旗新新旗新新旗旗新新旗新新旗旗新新旗新新200新protected void
handleTitle(char[] text)
遇到HTML标题标签时调用。protected TagElement
makeTag(Element elem)
创建一个TagElement。protected TagElement
makeTag(Element elem, boolean fictional)
创建一个TagElement。protected void
markFirstTime(Element elem)
标记在文档中第一次看到标签void
parse(Reader in)
解析一个HTML流,给出一个DTD。String
parseDTDMarkup()
解析文档类型声明标记声明。protected boolean
parseMarkupDeclarations(StringBuffer strBuff)
解析标记声明。protected void
startTag(TagElement tag)
处理起始标签。
-
-
-
字段详细信息
-
dtd
protected DTD dtd
该dtd。
-
strict
protected boolean strict
此标志确定解析器是否将严格执行SGML兼容性。 如果是虚假的,那么对某些常见类型的错误的HTML构造将会宽松。 在严格或不严格的情况下,将会记录错误。
-
-
构造方法详细信息
-
Parser
public Parser(DTD dtd)
使用指定的dtd
创建解析器。- 参数
-
dtd
- dtd。
-
-
方法详细信息
-
getCurrentLine
protected int getCurrentLine()
- 结果
- 当前正在解析的行的行号
-
makeTag
protected TagElement makeTag(Element elem, boolean fictional)
创建一个TagElement。- 参数
-
elem
- 存储标签定义的元素 -
fictional
- 要为标签设置的标志“fictional
”的值 - 结果
-
创建的
TagElement
-
makeTag
protected TagElement makeTag(Element elem)
创建一个TagElement。- 参数
-
elem
- 存储标签定义的元素 - 结果
-
创建的
TagElement
-
getAttributes
protected SimpleAttributeSet getAttributes()
返回当前标签的属性。- 结果
-
SimpleAttributeSet
包含属性
-
flushAttributes
protected void flushAttributes()
删除当前属性。
-
handleText
protected void handleText(char[] text)
新新新旗新新新旗新新新新旗新新旗新新旗新新旗新新旗旗新新旗新新旗旗新新旗新新200新- 参数
-
text
- 节文本
-
handleTitle
protected void handleTitle(char[] text)
遇到HTML标题标签时调用。- 参数
-
text
- 标题文字
-
handleComment
protected void handleComment(char[] text)
遇到HTML注释时调用。- 参数
-
text
- 正在处理的评论
-
handleEOFInComment
protected void handleEOFInComment()
当内容终止而不关闭HTML注释时调用。
-
handleEmptyTag
protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
遇到空标签时调用。- 参数
-
tag
- 正在处理的标签 - 异常
-
ChangedCharSetException
- 如果文档字符集已更改
-
handleStartTag
protected void handleStartTag(TagElement tag)
遇到开始标签时调用。- 参数
-
tag
- 正在处理的标签
-
handleEndTag
protected void handleEndTag(TagElement tag)
当遇到结束标记时调用。- 参数
-
tag
- 正在处理的标签
-
handleError
protected void handleError(int ln, String msg)
发生了错误。- 参数
-
ln
- 包含错误的行数 -
msg
- 错误消息
-
error
protected void error(String err, String arg1, String arg2, String arg3)
调用错误处理程序。- 参数
-
err
- 错误类型 -
arg1
- 第一个错误信息参数 -
arg2
- 第二个错误信息参数 -
arg3
- 第3个错误信息参数
-
error
protected void error(String err, String arg1, String arg2)
使用第三个错误消息参数“?”调用错误处理程序。- 参数
-
err
- 错误类型 -
arg1
- 第一个错误信息参数 -
arg2
- 第二个错误信息参数
-
error
protected void error(String err, String arg1)
使用第2和第3个错误消息参数“?”调用错误处理程序。- 参数
-
err
- 错误类型 -
arg1
- 第一个错误信息参数
-
error
protected void error(String err)
使用第1,第2和第3个错误消息参数“?”调用错误处理程序。- 参数
-
err
- 错误类型
-
startTag
protected void startTag(TagElement tag) throws ChangedCharSetException
处理起始标签。 新标签被推到标签堆栈上。 检查属性列表是否需要属性。- 参数
-
tag
- 标签 - 异常
-
ChangedCharSetException
- 如果文档字符集已更改
-
endTag
protected void endTag(boolean omitted)
处理结束标签 结束标签从标签堆栈弹出。- 参数
-
omitted
-true
如果标签实际上不在文档中,而是由解析器
-
markFirstTime
protected void markFirstTime(Element elem)
标记在文档中第一次看到标签- 参数
-
elem
- 由标签表示的元素
-
parseDTDMarkup
public String parseDTDMarkup() throws IOException
解析文档类型声明标记声明。 目前忽略它。- 结果
- 标记声明的字符串表示形式
- 异常
-
IOException
- 如果发生I / O错误
-
parseMarkupDeclarations
protected boolean parseMarkupDeclarations(StringBuffer strBuff) throws IOException
解析标记声明。 目前只处理文档类型声明标记。 如果它是一个标记声明则返回true,否则返回false。- 参数
-
strBuff
- 标记声明 - 结果
-
true
如果这是一个有效的标记声明; 否则false
- 异常
-
IOException
- 如果发生I / O错误
-
parse
public void parse(Reader in) throws IOException
解析一个HTML流,给出一个DTD。- 参数
-
in
- 读者从中读取来源 - 异常
-
IOException
- 如果发生I / O错误
-
getCurrentPos
protected int getCurrentPos()
返回当前位置。- 结果
- 当前位置
-
-