Довольно печатать ("только для отступов") HTML-документы на Java (без JTidy)

Мы генерируем HTML-файлы из универсального шаблонизатора Apache Speed. Сгенерированный HTML выглядит некрасиво и не имеет корректного отступа.

В моем случае у меня есть HTML, хранящийся в строке, который я хочу манипулировать таким образом, чтобы он выглядел довольно напечатанным.

Я уже попробовал JTidy, но он изменяет исходный код HTML, когда я передаю необработанный HTML через него. Иногда он добавляет или удаляет теги HTML.

Мой вопрос:

Есть ли библиотека Java или что-то еще, что (только!) Довольно печатает мой HTML-код без добавления, удаления тегов из моего HTML-документа? Это должно только сделать отступ, так, чтобы это выглядело довольно напечатанным! Ни больше ни меньше. Есть идеи?:-)

Также приветствуются предложения кода, советы или подсказки.

С наилучшими пожеланиями

3 ответа

Может быть, немного поздно, но я нашел решение этого с Jsoup.

вы можете получить "симпатичную" версию html, используя только парсер, и (в случае необходимости) избежать генерации html-элементов, используя "специальный парсер"

Я получил ответ на этот вопрос Jsoup

И его

public static String formatHTML(String html) throws Exception{ Document doc = Jsoup.parse(html, "", Parser.xmlParser()); return doc.toString(); }

Надеюсь, это поможет.

С уважением

Найти любой пример синтаксического анализатора SAX в Java. indent++ для открытия тегов, intent-- для закрытия и записи содержимого с подсчитанным намерением.

Почему бы вам не написать простой парсер Java для красивой печати HTML самостоятельно. Вот эскиз:

  1. Отслеживать открывать и закрывать теги, например, и
  2. иметь счетчик, чтобы выяснить текущий уровень отступа.
  3. Возможно, используйте стек, чтобы выдвинуть, выдвиньте уровень отступа
  4. Просто переберите строку HTML и поместите текущий уровень отступа в стек, когда увидите тег
  5. Если вы видите вложенный тег, увеличивайте уровень отступа и продолжайте
  6. Когда вы видите конец тега, например. и т.д., затем вытолкните стек, чтобы вернуться к предыдущему уровню отступа

Я хотел дать вам общее представление, вы можете использовать это как отправную точку. Я написал много красивых принтеров на Perl. Вы можете использовать Perl для написания скрипта довольно быстро..

Другие вопросы по тегам