2

jTidy を使用して、持っている HTML スニペットをきれいに印刷しようとしています。これまでのところ、次のことを行いました。

protected String prettyPrintHTML(String rawHTML) {

    Tidy tidy = new Tidy();
    tidy.setXHTML(true);
    tidy.setIndentContent(true);
    tidy.setPrintBodyOnly(true);
    tidy.setTidyMark(false);

    // Convert HTML to DOM
    Document htmlDOM = tidy.parseDOM(new ByteArrayInputStream(rawHTML.getBytes()), null);

    // Pretty Print
    OutputStream out = new ByteArrayOutputStream();
    tidy.pprint(htmlDOM, out);

    return out.toString();
}

これは機能しますが、出力には <html>、<head>、<title>、<body> タグなどの追加コンテンツが含まれます。

たとえば、入力 <ul><li>sub1</li><li>sub2<ul><li>sub21</li></ul></li></ul> の場合、次のようになります。

line 1 column 59 - Warning: inserting missing 'title' element
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
    </title>
  </head>
  <body>
    <ul>
      <li>
        sub1
      </li>
      <li>
        sub2
        <ul>
          <li>
            sub21
          </li>
        </ul>
      </li>
    </ul>
  </body>
</html>

APIをざっと調べた後、setPrintBodyOnlyメソッド(上記で使用したもの)を見つけましたが、まだ運がありません.

ここで何が欠けていますか? グーグルを試してみましたが、これまでのところすべてのリンクが行き止まりになっています。

4

1 に答える 1

2

以下のリンクに同様の質問が投稿されています。同じことを達成するためのいくつかの代替方法を示す回答があります。

JTidy Node.findBody() — 使い方?

于 2011-06-20T07:45:08.023 に答える