Module  java.desktop

Class 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 )或尾随空格时,所有空格都将被忽略,直到遇到非空白字符为止。 这似乎使行为更接近流行的浏览器。

    另请参见:
    DTDTagElementSimpleAttributeSet
    • 字段详细信息

      • 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注释时调用。
      • 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 - 错误类型
      • 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​()
        返回当前位置。
        结果
        当前位置