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

如何仅反转义XML标签保留内容转义,处理CDATA内的XML数据

XML CDATA转义内容格式化解决方案

核心问题说明

你遇到的问题本质是返回的XML标签被做了二次转义,但内容里的小于号转义符需要保留,不能全量解XML转义。

  • 直接调用StringEscapeUtils.unescapeXml()不符合需求的原因:该方法会将所有XML转义字符统一解转义,包括内容中需要保留的&amp;lt;(对应小于号<),会导致最终的XML标签结构混乱,无法正常解析。
  • 你之前写的正则错误原因:Java的replaceAll方法中,捕获组的引用用$1、$2这种格式,不支持{0}占位符语法。

正确解决方案

通过正则匹配仅对XML标签部分的转义符做解转义,保留内容中的转义符即可,代码示例如下:

// 填入接口返回的原始字符串
String rawContent = "你的原始返回内容";

// 第一步:替换标签开头的&amp;lt;为<
String step1 = rawContent.replaceAll("&amp;lt;(/?[a-zA-Z][\\w-]*)", "<$1");
// 第二步:替换标签结尾的&amp;gt;为>
String formattedXml = step1.replaceAll("([a-zA-Z][\\w-]*)&amp;gt;", "$1>");

// formattedXml就是符合要求的可解析XML

如果你的XML标签名包含字母、数字、下划线、横杠之外的特殊字符,调整正则中的[a-zA-Z][\\w-]*匹配规则适配实际场景即可。

内容的提问来源于stack exchange,提问作者David González Arias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:30:04