モジュール java.desktop

クラスParser

  • すべての実装されたインタフェース:
    DTDConstants
    直系の既知のサブクラス:
    DocumentParser

    public class Parser
    extends Object
    implements DTDConstants
    DTD駆動型の単純なHTMLパーサーです。 パーサーはInputStreamからHTMLファイルを読み取って、タグやデータを検出すると、各種のメソッド(サブクラスでオーバーライドされる)を呼び出します。

    残念なことに、正しく実装されていないHTMLパーサーが数多く出回っています。その結果、フォーマットの正しくないHTMLファイルも多数存在します。 このパーサーは、ほとんどのHTMLファイルの解析を試みます。 すなわち、この実装はHTMLを優先し、SGMLの仕様とは異なっている場合もあります。

    このパーサーは、\rおよび\r\nを\nとして扱います。 開始タグの後、および終了タグの前の改行は、SGMLやHTMLの仕様に従って無視されます。

    HTML仕様では、空白文字がどのように連続するかについて明確に指定されていません。 特に、次のようなシナリオについては議論されていません(ここでは空白文字を使用するべきだが、空白文字の表示に&nbspを使用している)。

    <b>blah <i> <strike> fooは、<b>blah <i><strike>fooとして扱われます。

    同様に、<p><a href="xx"> <em>Using</em></a></p>は、<p><a href="xx"><em>Using</em></a></p>として扱われます。

    strictがfalseの場合、フローをブレークするタグ(TagElement.breaksFlows)や末尾に空白が見つかると、空白以外の文字が見つかるまで、空白はすべて無視されます。 これにより、一般的なブラウザに動作が近くなります。

    関連項目:
    DTD, TagElement, SimpleAttributeSet
    • フィールドの詳細

      • 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のtitleタグを検出したときに呼び出されます。
        パラメータ:
        text - タイトル・テキスト
      • handleComment

        protected void handleComment​(char[] text)
        HTMLのコメントを検出したときに呼び出されます。
        パラメータ:
        text - コメントが処理されている
      • handleEOFInComment

        protected void handleEOFInComment()
        HTMLコメントを閉じずにコンテンツが終了すると呼び出されます。
      • handleEmptyTag

        protected void handleEmptyTag​(TagElement tag)
                               throws ChangedCharSetException
        空のタグを検出したときに呼び出されます。
        パラメータ:
        tag - 処理されるタグ
        例外:
        ChangedCharSetException - ドキュメントの文字セットが変更された場合
      • 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 - 2番目のエラー・メッセージ引数
        arg3 - 3番目のエラー・メッセージ引数
      • error

        protected void error​(String err,
                             String arg1,
                             String arg2)
        3番目のエラー・メッセージ引数"?"を使用してエラー・ハンドラを呼び出します。
        パラメータ:
        err - エラーのタイプ
        arg1 - 最初のエラー・メッセージ引数
        arg2 - 2番目のエラー・メッセージ引数
      • error

        protected void error​(String err,
                             String arg1)
        第2および第3のエラー・メッセージ引数"?"を使用してエラー・ハンドラを呼び出します。
        パラメータ:
        err - エラーのタイプ
        arg1 - 最初のエラー・メッセージ引数
      • error

        protected void error​(String err)
        第1、第2、第3のエラー・メッセージ引数"?"を使用してエラー・ハンドラを呼び出します。
        パラメータ:
        err - エラーのタイプ
      • startTag

        protected void startTag​(TagElement tag)
                         throws ChangedCharSetException
        開始タグを処理します。 新しいタグが、タグのスタックにプッシュされます。 属性リストを調べて、必要な属性を探します。
        パラメータ:
        tag - タグ
        例外:
        ChangedCharSetException - ドキュメントの文字セットが変更された場合
      • endTag

        protected void endTag​(boolean omitted)
        終了タグを処理します。 終了タグは、タグのスタックからポップされます。
        パラメータ:
        omitted - タグは、文書には実際には存在しないが、場合true、パーサーによって想定されます
      • markFirstTime

        protected void markFirstTime​(Element elem)
        ドキュメント内で最初に見つかったタグにマークを付けます。
        パラメータ:
        elem - タグによって表される要素
      • parseDTDMarkup

        public String parseDTDMarkup()
                              throws IOException
        ドキュメント型宣言マークアップ宣言を解析します。 現在は、これを無視します。
        戻り値:
        マークアップ宣言の文字列表現
        例外:
        IOException - 入出力エラーが発生した場合
      • parseMarkupDeclarations

        protected boolean parseMarkupDeclarations​(StringBuffer strBuff)
                                           throws IOException
        マークアップ宣言を解析します。 現在は、文書型定義によるマークアップだけを処理します。 マークアップ宣言の場合はtrueを返し、そうでない場合はfalseを返します。
        パラメータ:
        strBuff - マークアップ宣言
        戻り値:
        trueこれが有効なマークアップ宣言である場合。そうでなければfalse
        例外:
        IOException - 入出力エラーが発生した場合
      • parse

        public void parse​(Reader in)
                   throws IOException
        DTDが指定されている場合に、HTMLストリームを解析します。
        パラメータ:
        in - 読者がソースを読む
        例外:
        IOException - 入出力エラーが発生した場合
      • getCurrentPos

        protected int getCurrentPos()
        現在の位置を返します。
        戻り値:
        現在の位置