模块  java.desktop

Class DocumentParser

  • 实现的所有接口
    DTDConstants

    public class DocumentParser
    extends Parser
    HTML文档的解析器(实际上,你可以指定一个DTD,但实际上你应该只使用这个类与swing中的html dtd)。 读取HTML的InputStream并调用ParserCallback类中的相应方法。 这是HTMLEditorKit用于解析HTML url的默认解析器。

    这将通知所有有效标记的回调,以及隐含但未明确指定的标记。 例如,html字符串(<p> blah)仅定义了ap标记。 回调将看到以下方法:

    1. handleStartTag(html,...)
    2. handleStartTag(head,...)
    3. handleEndTag(头)
    4. handleStartTag(body,...)
    5. handleStartTag(p,...)
    6. handleText(...)
    7. handleEndTag(p)的
    8. handleEndTag(体)
    9. handleEndTag(HTML)
    斜体的项目是暗示的,也就是说,虽然它们没有明确指定,但是它们应该是正确的html(头部不是必需的,但它仍然是生成的)。 对于那些隐含的标记,AttributeSet中的参数将有一个价值Boolean.TRUE为重点HTMLEditorKit.ParserCallback.IMPLIED

    HTML.Attributes定义了html属性的类型安全枚举。 如果在HTML.Attribute中定义了标记的属性键,则HTML.Attribute将用作键,否则将使用String。 例如,<p foo = bar class = neat>有两个属性。 foo没有在HTML.Attribute中定义,其中class是,因此AttributeSet将包含两个值,HTML.Attribute.CLASS,String值为'neat',String键'foo',String值为'酒吧'。

    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之一,它在解析流时遇到的最多。

    • 构造方法详细信息

      • DocumentParser

        public DocumentParser​(DTD dtd)
        使用指定的 dtd创建文档解析器。
        参数
        dtd - dtd。