模块  java.desktop

Class Parser

  • 实现的所有接口
    DTDConstants
    已知直接子类:
    DocumentParser

    public class Parser
    extends Object
    implements DTDConstants
    一个简单的DTD驱动的HTML解析器。 解析器从InputStream读取HTML文件,并在遇到标记和数据时调用各种方法(应在子类中重写)。

    不幸的是,有许多糟糕实现的HTML解析器,因此有许多格式错误的HTML文件。 此解析器尝试解析大多数HTML文件。 这意味着实现有时会偏离SGML规范而不支持HTML。

    解析器将\ r和\ r \ n视为\ n。 正如SGML / HTML规范中所指定的那样,将忽略starttags之后和结束标记之前的换行符。

    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
        此标志确定Parser是否严格执行SGML兼容性。 如果为false,则对于错误的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)
        遇到PCDATA时调用。
        参数
        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 - 第三个错误消息参数
      • error

        protected void error​(String err,
                             String arg1,
                             String arg2)
        使用第3个错误消息参数“?”调用错误处理程序。
        参数
        err - 错误类型
        arg1 - 第一个错误消息参数
        arg2 - 第二个错误消息参数
      • error

        protected void error​(String err,
                             String arg1)
        使用第二个和第三个错误消息参数“?”调用错误处理程序。
        参数
        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
        给定DTD解析HTML流。
        参数
        in - 阅读源代码的读者
        异常
        IOException - 如果发生I / O错误
      • getCurrentPos

        protected int getCurrentPos()
        返回当前位置。
        结果
        目前的立场