java.lang.Object
javax.swing.text.html.parser.Parser
javax.swing.text.html.parser.DocumentParser
- 所有已实现的接口:
-
DTDConstants
HTML文档的解析器(实际上,您可以指定一个DTD,但您应该只在swing中使用html dtd与此类一起)。读取HTML的InputStream并调用ParserCallback类中的适当方法。这是HTMLEditorKit用于解析HTML url的默认解析器。
这将为所有有效标签以及暗示但未明确指定的标签调用回调。例如,html字符串(<p>blah)只定义了一个p标签。回调将看到以下方法:
- handleStartTag(html, ...)
- handleStartTag(head, ...)
- handleEndTag(head)
- handleStartTag(body, ...)
- handleStartTag(p, ...)
- handleText(...)
- handleEndTag(p)
- handleEndTag(body)
- handleEndTag(html)
HTMLEditorKit.ParserCallback.IMPLIED
的值将为Boolean.TRUE
。
HTML.Attributes定义了html属性的类型安全枚举。如果标签的属性键在HTML.Attribute中定义,则将使用HTML.Attribute作为键,否则将使用String。例如<p foo=bar class=neat>有两个属性。foo在HTML.Attribute中未定义,而class在其中定义,因此AttributeSet中将有两个值,HTML.Attribute.CLASS的String值为'neat',键'foo'的String值为'bar'。
位置参数将指示标签、注释或文本的开始。类似于数组,流中的第一个字符的位置为0。对于暗示的标签,位置将指示下一个遇到的标签的位置。在第一个示例中,暗示的开始body和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中的值(在本例中为selected)。
一旦流被解析,回调将被通知最可能的行尾字符串。行尾字符串将是\n、\r或\r\n中的一个,无论在解析流时遇到哪一个。
-
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
handleEmptyTag
(TagElement tag) 处理空标签。protected void
handleEndTag
(TagElement tag) 处理结束标签。protected void
handleStartTag
(TagElement tag) 处理开始标签。protected void
handleText
(char[] data) 处理文本。void
parse
(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) 解析HTML流,给定一个DTD。Methods declared in class javax.swing.text.html.parser.Parser
endTag, error, error, error, error, flushAttributes, getAttributes, getCurrentLine, getCurrentPos, handleComment, handleEOFInComment, handleError, handleTitle, makeTag, makeTag, markFirstTime, parse, parseDTDMarkup, parseMarkupDeclarations, startTag
-
Constructor Details
-
DocumentParser
使用指定的dtd
创建文档解析器。- 参数:
-
dtd
- dtd。
-
-
Method Details
-
parse
public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) throws IOException 解析HTML流,给定一个DTD。- 参数:
-
in
- 用于读取源的reader -
callback
- 回调 -
ignoreCharSet
- 如果为true
,则忽略字符集 - 抛出:
-
IOException
- 如果发生I/O错误
-
handleStartTag
处理开始标签。- 覆盖:
-
handleStartTag
在类中Parser
- 参数:
-
tag
- 正在处理的标签
-
handleEmptyTag
处理空标签。- 覆盖:
-
handleEmptyTag
在类中Parser
- 参数:
-
tag
- 正在处理的标签 - 抛出:
-
ChangedCharSetException
- 如果文档字符集已更改
-
handleEndTag
处理结束标签。- 覆盖:
-
handleEndTag
在类中Parser
- 参数:
-
tag
- 正在处理的标签
-
handleText
protected void handleText(char[] data) 处理文本。- 覆盖:
-
handleText
在类中Parser
- 参数:
-
data
- 段落文本
-