jTidy - красивая печать без головы, заголовки - PullRequest
2 голосов
/ 19 июня 2011

Я пытаюсь использовать 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();
}

Это работает, но вывод включает дополнительный контент, такой как теги , , и .

Например, для ввода

  • sub1
  • sub2
    • sub21
это дает,
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 (который я использовал выше), но все равно не повезло.

Что мне здесь не хватает?Я пробовал поискать в Google, но пока все ссылки ведут в тупик.

1 Ответ

2 голосов
/ 20 июня 2011

По следующей ссылке размещен похожий вопрос. Он имеет ответы, которые показывают несколько альтернативных способов достижения того же.

JTidy Node.findBody () - Как использовать?

...