- java.lang.Object
-
- javax.swing.text.html.parser.Parser
-
- javax.swing.text.html.parser.DocumentParser
-
- All Implemented Interfaces:
-
DTDConstants
public class DocumentParser extends Parser
HTML文档的解析器(实际上,您可以指定一个DTD,但您应该只使用html dtd的这个类)。 读取一个HTML的InputStream,并在ParserCallback类中调用适当的方法。 这是HTMLEditorKit用来解析HTML网址的默认解析器。这将消息所有有效标记的回调以及隐含但未明确指定的标记。 例如,html字符串(<p> blah)只有定义了ap标签。 回调将看到以下方法:
- handleStartTag(html,...)
- handleStartTag(头,...)
- handleEndTag(头)
- handleStartTag(body,...)
- handleStartTag(p,...)
- handleText(...)
- handleEndTag(p)的
- handleEndTag(体)
- handleEndTag(HTML)
Boolean.TRUE
,键值为HTMLEditorKit.ParserCallback.IMPLIED
。HTML.Attributes定义了html属性的类型安全枚举。 如果HTML.Attribute中定义了一个标签的属性键,则将使用HTML.Attribute作为键,否则将使用String。 例如<p foo = bar class = neat>有两个属性。 foo没有在HTML.Attribute中定义,因为它是Class,因此AttributeSet将有两个值,其中的值为“neat”的String.Attribute.CLASS和String值为'foo'的String key为'酒吧'。
position参数将指示标签,注释或文本的开始。 与数组类似,流中的第一个字符的位置为0.对于隐含的标记,位置将指示下一个遇到标记的位置。 在第一个示例中,隐含的起始正文和html标签将具有与p标记相同的位置,并且隐含的结尾p,html和body标签都将具有相同的位置。
当html跳过空格时,文本的位置将是第一个有效字符的位置,例如在字符串'\ n \ n \ nblah'中,文本“blah”将具有3的位置,跳过换行符。
对于没有值的属性,例如,在HTML字符串
<foo blah>
,属性blah
没有值,将有两个可能的值放在AttributeSet的值中:- 如果DTD不包含元素的定义,或定义没有显式值,那么AttributeSet中的值将为
HTML.NULL_ATTRIBUTE_VALUE
。 - 如果DTD包含显式值,则如下所示:
<!ATTLIST OPTION selected (selected) #IMPLIED>
将使用dtd(在这种情况下选择)中的该值。
一旦流已被解析,回调通知最可能的行字符串结束。 行字符串的结尾将是\ n,\ r或\ r \ n中的一个,这在解析流中遇到最多。
-
-
Field Summary
-
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
-
-
构造方法摘要
构造方法 Constructor 描述 DocumentParser(DTD dtd)
使用指定的dtd
创建文档解析器。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected void
handleComment(char[] text)
遇到HTML注释时调用。protected void
handleEmptyTag(TagElement tag)
处理空标签。protected void
handleEndTag(TagElement tag)
处理结束标签protected void
handleError(int ln, String errorMsg)
发生了错误。protected void
handleStartTag(TagElement tag)
处理起始标签。protected void
handleText(char[] data)
处理文本。void
parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet)
解析一个HTML流,给出一个DTD。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javax.swing.text.html.parser.Parser
endTag, error, error, error, error, flushAttributes, getAttributes, getCurrentLine, getCurrentPos, handleEOFInComment, handleTitle, makeTag, makeTag, markFirstTime, parse, parseDTDMarkup, parseMarkupDeclarations, startTag
-
-
-
-
构造方法详细信息
-
DocumentParser
public DocumentParser(DTD dtd)
使用指定的dtd
创建文档解析器。- 参数
-
dtd
- dtd。
-
-
方法详细信息
-
parse
public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) throws IOException
解析一个HTML流,给出一个DTD。- 参数
-
in
- 读者从中读取来源 -
callback
- 回调 -
ignoreCharSet
- 如果true
字符集被忽略 - 异常
-
IOException
- 如果发生I / O错误
-
handleStartTag
protected void handleStartTag(TagElement tag)
处理起始标签。- 重写:
-
handleStartTag
在Parser
- 参数
-
tag
- 正在处理的标签
-
handleComment
protected void handleComment(char[] text)
描述从类别复制:Parser
遇到HTML注释时调用。- 重写:
-
handleComment
在Parser
- 参数
-
text
- 正在处理的评论
-
handleEmptyTag
protected void handleEmptyTag(TagElement tag) throws ChangedCharSetException
处理空标签。- 重写:
-
handleEmptyTag
在Parser
- 参数
-
tag
- 正在处理的标签 - 异常
-
ChangedCharSetException
- 如果文档字符集已更改
-
handleEndTag
protected void handleEndTag(TagElement tag)
处理结束标签- 重写:
-
handleEndTag
在Parser
- 参数
-
tag
- 正在处理的标签
-
handleText
protected void handleText(char[] data)
处理文本。- 重写:
-
handleText
在Parser
- 参数
-
data
- 段文本
-
handleError
protected void handleError(int ln, String errorMsg)
描述从类别复制:Parser
发生了错误。- 重写:
-
handleError
在Parser
- 参数
-
ln
- 包含错误的行数 -
errorMsg
- 错误消息
-
-