You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

org.apache.commons.lang3.StringEscapeUtils.unescapeXml无法处理连续转义字符问题咨询

解决commons-lang3 StringEscapeUtils.unescapeXml无法处理双重转义XML字符的问题

你的字符串是双重XML转义的结果:&amp;lt;本质是<经过两次转义得到的(第一次转<为&lt;,第二次转&为&amp;,最终变成&amp;lt;)。而unescapeXml默认只执行一次反转义,所以只会把&amp;转回&,得到&lt;,没法直接得到<。

解决办法:

1. 直接调用两次unescapeXml

如果确定是双重转义,直接调用两次方法即可:

String error = "&amp;lt;errors&amp;gt;";
String out = org.apache.commons.lang3.StringEscapeUtils.unescapeXml(error);
// 第二次调用完成剩余反转义
out = org.apache.commons.lang3.StringEscapeUtils.unescapeXml(out);
System.out.println(out); // 输出:<errors>

2. 循环调用直到无转义字符可处理

如果不确定转义层数(可能是多重转义),可以循环调用,直到结果不再变化:

String error = "&amp;lt;errors&amp;gt;";
String out = org.apache.commons.lang3.StringEscapeUtils.unescapeXml(error);
String prev;
do {
    prev = out;
    out = org.apache.commons.lang3.StringEscapeUtils.unescapeXml(out);
} while (!prev.equals(out));
System.out.println(out); // 输出:<errors>

3. 升级commons-lang3版本(可选)

如果可以升级依赖,将commons-lang3升级到3.10及以上版本,新版本的unescapeXml提供了重载方法支持更灵活的转义处理,但对于双重转义场景,上述两种方法已经足够解决问题。

内容的提问来源于stack exchange,提问作者ompratap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:37:09