如何在Java中取消转义HTML字符实体?

13 浏览
0 Comments

如何在Java中取消转义HTML字符实体?

基本上,我希望解码给定的HTML文档,并替换所有特殊字符,比如将 替换为\" \",将>替换为\">\"。\n在.NET中,我们可以使用HttpUtility.HtmlDecode方法。\n在Java中有什么等效的函数吗?

0
0 Comments

最近,我需要优化一个慢速的Struts项目。事实证明,在默认情况下,Struts调用Apache进行HTML字符串转义(<s:property value="..."/>)。关闭转义(<s:property value="..." escaping="false"/>)可以让某些页面的运行速度提高5%至20%。

后来我发现,当给定空字符串作为参数时,这段代码可能进入循环。当前版本已经修复了这个问题。

这是转义还是反转义?&amp;没有被解码。只有&添加到了映射中,所以它只能单向工作?

StringWriter内部使用StringBuffer,而StringBuffer使用锁定。直接使用StringBuilder应该更快。

当遇到"&#61;"(即=)时,在上述代码中发现了一个错误。writer.write(entityValue);应该是writer.write(Character.toString((char)entityValue)); – Stevko 4 hours ago

你的评论似乎有点混乱。auml代表的是ä而不是д

改进版本包含所有HTML5字符:gist.github.com/MarkJeronimus/798c452582e64410db769933ec71cfb7

我的gist中有v2版本(上面的链接↑)。它的功能相同,但类文件占用空间更小,编译时间更短。如果有问题,可以在gist的编辑历史中找到v1版本。

0
0 Comments

问题的出现原因:在处理HTML内容时,有时会遇到需要解码HTML字符实体的情况,例如将"&nbsp;"解码为一个空格字符。然而,使用其他库来解码HTML字符实体可能会有一些问题。

解决方法:在Java中,可以使用Jsoup库来解码HTML字符实体。Jsoup是一个开源项目,提供了更多处理HTML内容的功能。可以使用以下代码来解码HTML字符实体:

Jsoup.parse(textValue).text();

另一种可能的解决方法是使用静态方法`org.jsoup.parser.Parser.unescapeEntities(String string, boolean inAttribute)`。可以通过以下代码来解码HTML字符实体:

boolean strictMode = true;
String unescapedString = org.jsoup.parser.Parser.unescapeEntities(textValue, strictMode);

同时,Jsoup库还提供了方便的API用于提取和操作数据,使用DOM、CSS和类似jQuery的方法来处理HTML内容。该库使用MIT许可证,是一个非常方便和强大的工具。

需要注意的是,新版本的Jsoup使用`.text()`代替了`.getText()`方法。

使用Jsoup库来解码HTML字符实体是一个简单而有效的方法,尤其是对于已经在项目中使用Jsoup的情况。

0
0 Comments

在Java中如何去除HTML字符实体转义?

问题的出现原因是StringEscapeUtils.unescapeHtml4()方法不能很好地解码HTML特殊字符。解决方法是使用一个“dirty trick”,将值最初存储在一个隐藏字段中进行转义,然后目标字段从隐藏字段中获取值。

解决方法是使用Apache Commons Text库中的StringEscapeUtils类,该类已被弃用并移至Apache commons-text库。使用StringEscapeUtils.unescapeHtml4()方法可以将包含字符实体转义的字符串转换为包含实际Unicode字符的字符串,并且支持HTML 4.0实体。

例如,如果要将字符串<p>&uuml;&egrave;</p>转换为<p>üé</p>,使用StringEscapeUtils.unescapeHtml4()方法将得到&lt;p&gt;üè&lt;/p&gt;,无法保留现有的HTML标签。如果有类似&#147;的内容,它在Windows-1252中被转义为引号,但在Unicode中被转义为一些控制字符,是否可以更改转义编码?链接是半破碎的(页面锚点)。

为了解决这个问题,可以尝试使用其他方法或库来解码HTML字符实体,以确保能够正确地处理特殊字符和HTML标签。

0