Как сократить HTML-код с помощью JSoup или HTMLCleaner

Всем добрый день. Я пытаюсь сохранить HTML-код в базе данных и использую SHEF (Swing HTML Editor Framework), но есть огромная проблема. Обычно сгенерированный HTML выглядит так:

<div>
This is the first paragraph
</div>
<div>
This is the second paragraph.
</div>
<div>
This is the last paragraph.
</div>

Я хочу «очистить» html-код и вместо этого сделать результат таким:

<div>
This is the first paragraph
<br>
This is the second paragraph.
<br>
This is the last paragraph.
</div>

Я пытался использовать HTMLCleaner и JSoup, но я этого не сделал. Я могу заставить JSoup работать так, чтобы

<div>
This is the first paragraph
</div>
<div>

</div>
<div>
This is the last paragraph.
</div>

становится

<div>
This is the first paragraph
</div>
<br>
<div>
This is the last paragraph.
</div>

Это код JSoup, который я использую:

Document source = Jsoup.parse(sourceString);

// For each element
for(Element el: source.select("*")) {

   if(el.children().isEmpty() && !el.hasText() && el.isBlock()) {
       el.replaceWith(new Element(Tag.valueOf("br"), ""));//replace empty tags with newline
   }
}
return source.body().html();

Есть ли способ сделать сгенерированный HTML-код короче? Спасибо!


person triForce420    schedule 16.01.2017    source источник
comment
Очистка/редактирование HTML не имеет ничего общего с Swing. Не добавляйте тег Swing только потому, что приложение. использует некоторые из Swing API.   -  person Andrew Thompson    schedule 16.01.2017


Ответы (1)


Я бы посоветовал вместо того, чтобы возиться с HTML и пытаться минимизировать его, вы просто сжали его с помощью gzip и вместо этого сохранили в своей БД (и раздули на выходе).

Накладные расходы процессора минимальны, а экономия будет гораздо выше. И ваш код будет проще и универсальнее. gzip для HTML обычно дает коэффициент сжатия 75%-80%, в то время как удаление нескольких тегов даст вам сколько, 10%?

Вот пример того, как сжимать/распаковывать.

person Jonathan Hedley    schedule 16.01.2017
comment
Я мог бы это сделать, но это повлияет на другие существующие приложения :/ - person triForce420; 17.01.2017