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

Azure APIM中如何将XML字符串的&替换为&

解决XSLT转换时XML未转义&字符报错的自动处理方案

问题根因

你收到的报错是因为&是XML预留的实体起始字符,未转义为&的情况下,XML解析器会认为后续字符是实体名称,找不到对应的;结束符就会触发语法错误。

自动处理方案

你可以直接在set-body赋值阶段完成字符转义,有两种可选方案:

方案1:针对性替换&字符

如果你的XML字符串中仅&未转义,其余标签的<、>等都已经是合法XML格式,直接做字符串替换即可,避免破坏原有合法转义序列:

<set-body>@(((String)context.Variables["XML_STRING"]).Replace("&", "&amp;"))</set-body>
<xsl-transform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:copy-of select="A" />
</xsl:template>
</xsl:stylesheet>
</xsl-transform>

方案2:全量XML实体转义

如果你的XML字符串是原始未处理的纯文本,还有其他可能未转义的XML预留字符(<、>、"、'),可以用.NET内置的转义工具一次性处理所有字符,更稳妥:

<set-body>@(System.Net.WebUtility.HtmlEncode((String)context.Variables["XML_STRING"]))</set-body>
<!-- 后续xsl-transform逻辑保持不变 -->

注意:该方案会把所有XML预留字符都做转义,如果原有字符串中已经存在合法的转义序列(比如已经写好的&lt;),会被二次转义为&amp;lt;,请根据你的XML字符串实际情况选择方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:48:02