Довольно печатать («только для отступов») HTML-документы на Java (без JTidy) - PullRequest
3 голосов
/ 29 июля 2011

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

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

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

Мой вопрос:

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

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

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

Ответы [ 3 ]

2 голосов
/ 26 октября 2015

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

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

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

И его

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

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

Привет

1 голос
/ 30 июля 2011

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

0 голосов
/ 30 июля 2011

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

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

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

...