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

使用Groovy脚本替换XML中的反斜杠为双引号

解决方案

核心思路

精准替换XML中InstdAmt标签的Ccy属性值前后的反斜杠为双引号,避免全局替换反斜杠破坏其他内容。优先用正则匹配特定模式,确保只修改目标位置的字符。


具体实现

Python

用正则匹配Ccy=\([A-Z]{3}\)模式,替换为带双引号的格式:

import re

# 原始API返回的XML文本
raw_xml = '<Amt><InstdAmt Ccy=\USD\>4.38</InstdAmt></Amt>'
# 执行替换
fixed_xml = re.sub(r'Ccy=\\([A-Z]{3})\\', r'Ccy="\1"', raw_xml)

print(fixed_xml)
# 输出结果:<Amt><InstdAmt Ccy="USD">4.38</InstdAmt></Amt>

处理批量响应时,直接对API返回的完整文本做替换后,再用标准XML库解析即可。

JavaScript

注意转义字符的处理,用全局正则完成替换:

const rawXml = '<Amt><InstdAmt Ccy=\\USD\\>4.38</InstdAmt></Amt>';
const fixedXml = rawXml.replace(/Ccy=\\([A-Z]{3})\\/g, 'Ccy="$1"');

console.log(fixedXml);
// 输出结果:<Amt><InstdAmt Ccy="USD">4.38</InstdAmt></Amt>

Java

通过Pattern和Matcher实现正则替换:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class XmlFixer {
    public static void main(String[] args) {
        String rawXml = "<Amt><InstdAmt Ccy=\\USD\\>4.38</InstdAmt></Amt>";
        Pattern pattern = Pattern.compile("Ccy=\\\\([A-Z]{3})\\\\");
        Matcher matcher = pattern.matcher(rawXml);
        
        String fixedXml = matcher.replaceAll("Ccy=\"$1\"");
        System.out.println(fixedXml);
        // 输出结果:<Amt><InstdAmt Ccy="USD">4.38</InstdAmt></Amt>
    }
}

注意事项

  • 若API返回的反斜杠是转义后的字符(比如实际用\\表示单个\),要调整正则中的转义层数,确保匹配准确。
  • [A-Z]{3}的正则能覆盖所有3位大写字母的货币代码(如EUR、GBP),无需针对单个币种修改。
  • 替换完成后,即可用常规XML解析库(如Python的xml.etree.ElementTree、Java的DocumentBuilder)正常解析内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:53:19