arcanum_jp’s blog

おっさんの日記

Jericho Html Parser

 Jerichoで整形されたHTMLを取得するときは、SourceFormatterからだけど、整形自体はこのクラスがプライベートで持つProcessorが行う。じゃ、どのタグがインラインか、ブロック要素かというと、HTMLElementsクラスが持つ定数で決め打ち設定されているらしい。たとえばSELECTタグはインラインとか。

 でもフォーマッタで出力される文字にはSELECTの下にあるOPTIONタグはインデント表示されるよね。と思ったら、SELECTなどのいくつかのタグはFormControlの中で宣言されたクラスでOutputDocumentを操作して出力を変更している。SELECTの場合は内部のOPTIONはインデントするとか。

 Jerichoの吐き出す整形が気に入らなければOutputDocumentを操作するってことですか。なるほど。使い方を調べる必要があります。

SELECTはインラインと設定されているので、

  Source = new Source("<SELECT><OPTION>...</OPTION></SELECT>");
  SourceFormatter sf = source.getSourceFormatter();
  System.out.println(sf);
    ↓

  <SELECT><OPTION>...</OPTION></SELECT>

 となると思いきや、

  <SELECT>
      <OPTION>...</OPTION>
  </SELECT>
  となる。不思議〜と思ったら、OutputDocumentってクラスで整形してたって話。