モジュール java.desktop

クラスParser

java.lang.Object
javax.swing.text.html.parser.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

      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()
      現在の位置を返します。
      戻り値:
      現在の位置