Как удалить HTML-тэг в Java [дубликат]

Другой усекает без округления решения и примера.

    Convert 71.950005666 to a single decimal place number (71.9)
    1) 71.950005666 * 10.0 = 719.50005666
    2) Floor(719.50005666) = 719.0
    3) 719.0 / 10.0 = 71.9

    select Floor(71.950005666 * 10.0) / 10.0
14
задан tangens 9 November 2009 в 12:11
поделиться

4 ответа

Вместо этого следует использовать синтаксический анализатор HTML. Мне нравится htmlCleaner , потому что он дает мне довольно печатную версию HTML.

С помощью htmlCleaner вы можете:

TagNode root = htmlCleaner.clean( stream );
Object[] found = root.evaluateXPath( "//div[id='something']" );
if( found.length > 0 && found instanceof TagNode ) {
    ((TagNode)found[0]).removeFromTree();
}
20
ответ дан 1 December 2019 в 06:12
поделиться

Если вам просто нужно удалить теги, вы можете использовать это регулярное выражение:

content = content.replaceAll("<[^>]+>", "");

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

EDIT : Чтобы избежать проблем с комментариями HTML, вы можете сделать следующее:

content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
5
ответ дан 1 December 2019 в 06:12
поделиться

Нет. Регулярные выражения по определению не могут анализировать HTML.

Вы можете использовать регулярное выражение для s / <[^>] * \> // или чего-то подобного, но этого будет недостаточно, особенно если вы заинтересованы в удалении содержимого тегов.

Как сказал другой автор, используйте настоящий анализатор HTML.

4
ответ дан 1 December 2019 в 06:12
поделиться

В качестве альтернативы, если вы намерены отображать ввод, управляемый пользователем, обратно клиенту, то вы также можете просто заменить все < на & lt; и все > от & gt; . Таким образом, HTML не будет интерпретироваться как есть клиентским приложением (веб-браузером).

Если вы используете JSP в качестве технологии просмотра, вы можете использовать JSTL c: out для этого . По умолчанию он экранирует все объекты HTML. Так, например,

<c:out value="<script>alert('XSS');</script>" />

НЕ будет отображать предупреждение, а просто покажет фактическую строку как есть.

0
ответ дан 1 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: