Довольно печатать ("только для отступов") 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 самостоятельно. Вот эскиз:
- Отслеживать открывать и закрывать теги, например, и
- иметь счетчик, чтобы выяснить текущий уровень отступа.
- Возможно, используйте стек, чтобы выдвинуть, выдвиньте уровень отступа
- Просто переберите строку HTML и поместите текущий уровень отступа в стек, когда увидите тег
- Если вы видите вложенный тег, увеличивайте уровень отступа и продолжайте
- Когда вы видите конец тега, например. и т.д., затем вытолкните стек, чтобы вернуться к предыдущему уровню отступа
Я хотел дать вам общее представление, вы можете использовать это как отправную точку. Я написал много красивых принтеров на Perl. Вы можете использовать Perl для написания скрипта довольно быстро..