Обработка HTML в Java: преобразование HTML в другие форматы - PullRequest
2 голосов
/ 02 октября 2010

ОК, есть много HTML / XML-парсеров для Java. То, что я хочу сделать, это нечто большее, чем просто знать, как его анализировать. Я хочу отфильтровать содержимое и получить его в подходящей форме.

Точнее, я хочу сохранить только текст и изображения. Тем не менее, я хочу также сохранить некоторые параметры форматирования текста, например: курсив, полужирный шрифт, выравнивание и т. Д.

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

Есть идеи? Конечно, это должно было быть сделано много раз прежде.

Ответы [ 5 ]

5 голосов
/ 02 октября 2010

Если вы намереваетесь очистить отправленный пользователем контент от безопасного белого списка для предотвращения XSS, то я бы предложил использовать для этого Jsoup . Предоставляет встроенный белый список . Это так же просто, как:

String safeHtml = Jsoup.clean(unsafeHtml, Whitelist.basicWithImages());

Вы можете настроить Whitelist, как описано в javadoc .

Смотри также:

2 голосов
/ 02 октября 2010

JTidy + XSLT?

1 голос
/ 02 октября 2010

Посмотрите на HTML Parser , это может быть удобно.

0 голосов
/ 02 октября 2010

вы можете использовать xml dom parser в пакетах org.w3c.dom и javax.xml, с помощью которого вы можете легко проанализировать документ и получить содержимое узла

 Document doc = DocumentBuilder.parse(file);

, а затем получить элементы с помощью

NodeList nl = doc.getElementsByTagName("p"); // for paragraph tags

, а затем получить контент из нодлиста, он даст вам весь контент в теге параграфа, как вы можете подать заявку на любой тег

0 голосов
/ 02 октября 2010

ОК, я думаю, это выяснилось: при разборе Element я могу построить javax.swing.text.html.InlineView, то есть InlineElement ie = new InlineView(element), а затем получить атрибуты как ie.getAttributes).

.Если вы могли бы помочь больше, то есть поделиться личным опытом, пожалуйста, сделайте!

...