モジュール java.desktop

クラスDocumentParser

java.lang.Object
javax.swing.text.html.parser.Parser
javax.swing.text.html.parser.DocumentParser
すべての実装されたインタフェース:
DTDConstants

public class DocumentParser
extends Parser
HTMLドキュメントのParserです。実際にはDTDを指定できますが、swingのhtml dtdにはこのクラスだけを使うようにしてください。 HTMLのInputStreamを読み取り、ParserCallbackクラスの適切なメソッドを呼び出します。 これは、HTMLEditorKitがHTML urlを解析するために使用するデフォルトのパーサーです。

有効なすべてのタグ、および暗示されているが明示的には指定されていないタグに対して、コールバックを伝えます。 たとえば、HTML文字列(<p>blah)で定義されているのはpタグだけです。 コールバックは次のメソッドを検出します。

  1. handleStartTag(html, ...)
  2. handleStartTag(head, ...)
  3. handleEndTag(head)
  4. handleStartTag(body, ...)
  5. handleStartTag(p, ...)
  6. handleText(...)
  7. handleEndTag(p)
  8. handleEndTag(body)
  9. handleEndTag(html)
イタリック体の項目は暗示されています。つまり、明示的には指定されていませんが、正しいHTMLであるために存在しているということです(headは必要ありませんが、生成されます)。 暗示されるタグについては、AttributeSet引数がキーHTMLEditorKit.ParserCallback.IMPLIEDBoolean.TRUEの値を持ちます。

HTML.Attributesは型保証されたHTML属性の列挙を定義します。 タグの属性キーがHTML.Attributeで定義される場合はHTML.Attributeがキーとして使用され、それ以外の場合はStringが使用されます。 たとえば<p foo=bar class=neat>には2つの属性があります。fooはHTML.Attributeでは定義されず、クラスはHTML.Attributeで定義されるため、AttributeSetは2つの値を持ちます。「neat」というString値を持つHTML.Attribute.CLASSと、「bar」というString値を持つStringキー「foo」です。

位置引数はタグ、コメント、またはテキストの開始を示します。 配列と同様に、ストリームの最初の文字は0という位置が設定されます。 暗示されるタグの場合、位置は次に検出されるタグの位置を示します。 最初の例では、bodyおよびhtmlの暗示された開始タグはpタグと同じ位置が設定され、p、htmlおよびbodyの暗示された終了タグはすべて同じ位置が設定されています。

HTMLは空白をスキップするため、テキストの位置は最初の有効な文字の位置になります。たとえば文字列\n\n\nblahでは、テキストblahは3という位置が設定され、改行はスキップされます。

値を持たない属性、たとえばHTML文字列<foo blah>の属性blahは値を持ちませんが、こうした属性の場合は、AttributeSetの値に配置される値として次の2つが考えられます。

  • DTDが要素の定義を含まない場合、または定義に明示的な値がない場合は、AttributeSetの値はHTML.NULL_ATTRIBUTE_VALUEとなる。
  • DTDが明示的な値を含む場合はdtdのその値が使用される。たとえば<!ATTLIST OPTION selected (selected)#IMPLIED>では、dtdの値(この場合はselected)が使用される。

ストリームの解析が終了すると、コールバックは行末文字列である可能性が高い文字列の通知を受けます。 行末文字列は、ストリームの解析中にもっとも多く検出される\n、\rまたは\r\nのどれかです。

  • コンストラクタの詳細

    • DocumentParser

      public DocumentParser​(DTD dtd)
      指定されたdtdでドキュメント・パーサーを作成します。
      パラメータ:
      dtd - dtd。
  • メソッドの詳細

    • parse

      public void parse​(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharSet) throws IOException
      DTDが指定されている場合に、HTMLストリームを解析します。
      パラメータ:
      in - 読者がソースを読む
      callback - コールバック
      ignoreCharSet - trueがcharsetが無視される場合
      例外:
      IOException - 入出力エラーが発生した場合
    • handleStartTag

      protected void handleStartTag​(TagElement tag)
      開始タグを処理します。
      オーバーライド:
      handleStartTag、クラス: Parser
      パラメータ:
      tag - 処理されるタグ
    • handleEmptyTag

      protected void handleEmptyTag​(TagElement tag) throws ChangedCharSetException
      空のタグを処理します。
      オーバーライド:
      handleEmptyTag、クラス: Parser
      パラメータ:
      tag - 処理されるタグ
      例外:
      ChangedCharSetException - ドキュメントの文字セットが変更された場合
    • handleEndTag

      protected void handleEndTag​(TagElement tag)
      終了タグを処理します。
      オーバーライド:
      handleEndTag、クラス: Parser
      パラメータ:
      tag - 処理されるタグ
    • handleText

      protected void handleText​(char[] data)
      テキストを処理します。
      オーバーライド:
      handleText、クラス: Parser
      パラメータ:
      data - セクション・テキスト