public class Parser extends Object implements DTDConstants
不幸的是,有许多严重执行的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
Modifier and Type | Field and Description |
---|---|
protected DTD |
dtd |
protected boolean |
strict
此标志确定解析器是否将严格执行SGML兼容性。
|
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 | Method and Description |
---|---|
protected void |
endTag(boolean omitted)
处理结束标签
|
protected void |
error(String err) |
protected void |
error(String err, String arg1) |
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() |
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 |
makeTag(Element elem) |
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)
处理起始标签。
|
protected DTD dtd
protected boolean strict
public Parser(DTD dtd)
protected int getCurrentLine()
protected TagElement makeTag(Element elem, boolean fictional)
protected TagElement makeTag(Element elem)
protected SimpleAttributeSet getAttributes()
protected void flushAttributes()
protected void handleText(char[] text)
protected void handleTitle(char[] text)
protected void handleComment(char[] text)
protected void handleEOFInComment()
protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
protected void handleStartTag(TagElement tag)
protected void handleEndTag(TagElement tag)
protected void handleError(int ln, String msg)
protected void error(String err)
protected void startTag(TagElement tag) throws ChangedCharSetException
protected void endTag(boolean omitted)
protected void markFirstTime(Element elem)
public String parseDTDMarkup() throws IOException
IOException
protected boolean parseMarkupDeclarations(StringBuffer strBuff) throws IOException
IOException
public void parse(Reader in) throws IOException
IOException
protected int getCurrentPos()