Удаление тегов HTML кроме разрывов строк - PullRequest
0 голосов
/ 17 февраля 2012

Я получаю строку с сервера, имеющего HTML-теги.Я удаляю эти теги, используя регулярное выражение типа string1.replaceAll("\\<.*?>",""), но проблема в том, что он также удаляет разрывы строк и гиперссылки.Я хочу сохранить гиперссылки и разрывы строк и удалить все остальное.

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012

Не используйте регулярные выражения для разбора HTML.

Чтобы полностью отделить его от HTML (не то, что вы хотели, но просто сделать):

String html = "<h1>I only want<br/>line breaks and " + 
    "<a href='http://stackoverflow.com'>links</a>, <i>not</i>" +
    " the <b>other</b> stuff";
String sansHtml = Html.fromHtml(html).toString();

Чтобы вырезать его выборочно,сохраняя теги only <a> (и атрибут href) и <br>, я предлагаю вам использовать JSoup :

Whitelist whitelist = Whitelist.none().addTags("a", "br").addAttributes("a", "href");
String jsoupHtml = Jsoup.clean(html, whitelist);
0 голосов
/ 17 февраля 2012

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

string1.replaceAll("\\<br.*?>", "[br]");
string1.replaceAll("\\<a href='(.*?)'.*?>(.*?)\\<.*?>", "[link='$1' desc='$2']");
string1.replaceAll("\\<.*?>","");
string1.replaceAll("\\[br\\]", "<br\\>");
string1.replaceAll("\\[link='(.*?)' desc='(.*?)']", "<a href=\"$1\">$2<\\a>");

Код не проверен, поэтому он может не работать:)

...