Подтвердить что ты не робот

В чем разница между escapeXml и escapeHtml?

Я хотел бы избежать символов на страницах JSP. Что более подходит, escapeXml или escapeHtml?

4b9b3361

Ответ 1

Они предназначены для разных целей, в HTML есть много объектов, которые нет в XML. XML имеет только 5 экранов:

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

В то время как у HTML есть нагрузки - подумайте о &nbsp; &copy; и т.д. Эти HTML-коды недопустимы в XML, если вы не включили определение в заголовок. Числовые коды (например, &#169; для символа авторского права) действительны в обоих.

Ответ 2

В JSP нет такой вещи, как escapeHtml. Обычно вы используете <c:out escapeXml="true"> (он уже по умолчанию имеет значение true, поэтому вы можете его опустить) или fn:escapeXml(), чтобы избежать HTML в JSP.

например.

<c:out value="Welcome, ${user.name}" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />

Он будет избегать их как XML-сущностей, которые отлично работают в простом HTML. Они буквально называются объектами XML, поскольку объекты HTML недействительны в XML.

См. также:

Ответ 3

Поскольку вы отправляете HTML обратно потребителю, я бы пошел с escapeHtml.

escapeXml поддерживает только экранирование пяти основных объектов XML (gt, lt, quot, amp, apos), тогда как escapeHtml поддерживает экранирование всех известных HTML 4.0.

Ответ 4

Предполагая, что вы имеете в виду commons StringEscapeUtils, escapeXml работает только с <>"'&, а escapeHtml охватывает более богатый набор символов.