Я пытаюсь разобрать и очистить уценку на стороне клиента и сервера.
На стороне клиента я использую PageDown в качестве редактора уценки. Это именно то, что использует StackOverflow, и он поставляется с отличным окном предварительного просмотра. В этом окне предварительного просмотра отображается очищенный HTML-код, поэтому он удаляет такие элементы, как теги
<div>
.На стороне сервера я использую PegDown и JSoup для анализа и очистки уценки.
Тем не менее, я нахожу случаи, когда вывод двух не совпадает. Например:
Введите уценку: how are <div>tags</div> treated?
Вывод PageDown: <p>how are tags treated?</p>
Вывод PegDown/JSoup:
<p>how are </p>tags treated?
<p></p>
Я не делаю ничего особенного с JSoup. Вот мой код:
public class Main {
public static void main(String... args){
PegDownProcessor pdp = new PegDownProcessor();
String markdown = "how are <div>tags</div> treated?";
String html = pdp.markdownToHtml(markdown);
Whitelist whitelist = Whitelist.relaxed().removeTags("div");
html = Jsoup.clean(html, whitelist);
System.out.println(html);
System.out.println("Done.");
}
}
Я понимаю, почему это происходит, и меня не удивляет, что две разные системы генерируют два разных результата. Мой вопрос: как настроить JSoup, чтобы он просто удалял теги <div>
вместо добавления дополнительных тегов <p>
?
Моя конечная цель состоит в том, чтобы просто синтаксический анализ/санация на стороне сервера генерировать достаточно похожие результаты на синтаксический анализ/санитарную обработку на стороне клиента. Если есть лучшие способы сделать это, я открыт для предложений. Мне все равно, будут ли выходные данные двух одинаковыми, но такие вещи, как дополнительные теги <p>
, будут очень заметны для пользователей, поэтому я пытаюсь устранить это одно существенное различие.
Дополнительный вопрос: есть ли список HTML-тегов и атрибутов, которые может выводить PageDown?
Изменить: я также пытался использовать дезинфицирующее средство OWASP, но я получаю очень похожие результаты: теги <div>
удаляются, но теги <p>
"исправлены" вышеописанным способом, что приводит к другому html, чем дезинфицирующее средство PageDown.