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