Java заменяет все не HTML-теги в строке - PullRequest
4 голосов
/ 14 января 2011

Я хотел бы заменить все элементы, выглядящие как теги в строке, если они не являются допустимыми тегами HTML. Часть, выглядящая тегом, заключена в <> скобки. Например. <myemail@email.com> или <hello>, но <br>, <div> и т. Д. Необходимо сохранить.

У вас есть идеи, как этого добиться?

Любая помощь приветствуется!

ура

Балаш

Ответы [ 4 ]

8 голосов
/ 14 января 2011

Вы можете использовать JSoup для очистки HTML.

String cleaned = Jsoup.clean(html, Whitelist.relaxed());

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


Ваш конкретный пример будет:

String html = "one two three <blabla> four <text> five <div class=\"bold\">six</div>";
String cleaned = Jsoup.clean(html, Whitelist.relaxed().addAttributes("div", "class"));
System.out.println(cleaned);

Выход:

one two three  four  five 
<div class="bold">
 six
</div>
0 голосов
/ 14 января 2011

Вы также можете включить конечные теги в свой алгоритм сравнения. Так что вы можете захотеть найти косую черту (html end tag) и удалить ее перед сравнением.

0 голосов
/ 14 января 2011

Если вы делаете это для отображения ненадежных данных на веб-странице, простого удаления недействительных тегов недостаточно. Взгляните на OWASP AntiSamy .

0 голосов
/ 14 января 2011

Посмотрите на класс java.util.Scanner - вы можете установить разделитель, а затем посмотреть, соответствует ли строка тегу HTML или нет, - вам нужно будет создать массив строк, которые следует игнорировать.

...