escapeXml和escapeHtml有什么区别?

时间:2010-09-17 13:52:40

标签: html xml jsp escaping

我想在JSP页面中转义字符。哪个更合适,escapeXmlescapeHtml

4 个答案:

答案 0 :(得分:19)

它们是为不同目的而设计的,HTML有许多实际上没有XML的实体。 XML只有5个转义符:

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

虽然HTML已加载 - 请考虑&nbsp; &copy;等。除非在标题中包含定义,否则这些HTML代码在XML中无效。数字代码(如版权符号的&#169;)在两者中均有效。

答案 1 :(得分:17)

JSP中没有escapeHtml这样的东西。您通常使用<c:out escapeXml="true">(它的方式已默认为true,因此您可以省略它)或fn:escapeXml()以在JSP中转义HTML。

E.g。

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

它将作为XML实体转义它们,它们在纯HTML中也能很好地工作。它们只是字面上称为XML实体,因为HTML实体在XML中是无效的。

另见:

答案 2 :(得分:1)

由于您要将HTML发送回消费者,我会使用escapeHtml

escapeXml仅支持转义五个基本XML实体(gt,lt,quot,amp,apos),而escapeHtml支持转义所有已知的HTML 4.0 entities

答案 3 :(得分:1)

假设您指的是公共字符串StringEscapeUtils,escapeXml仅处理<>"'&,而escapeHtml则涵盖更丰富的字符集。