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ってクラスで整形してたって話。