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

如何在JMeter HTTP请求Body Data字段中转义XML字符串双引号?

解决JMeter HTTP请求Body Data中XML转义双引号生成合法JSON的问题

问题场景

在JMeter的HTTP请求取样器Body Data字段中,使用__FileToString函数读取XML内容构造JSON:

{"messagePayload":"${__FileToString(${ProjectHome}/Sample Messages/Request.xml)}"}

但XML中的双引号会导致JSON格式非法,尝试直接在函数后调用replace方法未生效:

{"messagePayload":"${__FileToString(${ProjectHome}/Sample Messages/Request.xml).replace('\"', '\\\"')}"}

需要无需单独脚本、直接在Body Data中生效的解决方案。

可行方案

方案1:使用__strReplace函数(JMeter 5.4+支持)

JMeter 5.4及以上版本内置__strReplace函数,可直接在Body Data中完成双引号转义:

{"messagePayload":"${__strReplace(${__FileToString(${ProjectHome}/Sample Messages/Request.xml)},\",\\\",)}"}

参数说明:__strReplace按「待替换字符串、原字符、目标字符、是否忽略大小写(可选)」顺序传参,这里将XML中的"替换为\",注意转义符号的嵌套使用。

方案2:使用__groovy函数(兼容全版本)

借助__groovy函数直接执行Groovy代码完成转义,无需额外脚本元件:

{"messagePayload":"${__groovy(new File(vars.get('ProjectHome') + '/Sample Messages/Request.xml').text.replaceAll('\"', '\\\\\"'),)}"}

说明:

  • 通过Groovy原生能力读取XML文件内容
  • 用replaceAll方法将双引号转义为JSON合法的\"
  • vars.get('ProjectHome')直接获取JMeter变量值,避免路径拼接问题

方案3:调整JSON结构简化写法

若XML无换行等特殊格式,可去掉messagePayload的外层双引号,直接让函数输出转义后的字符串作为JSON值:

{"messagePayload":${__groovy(new File(vars.get('ProjectHome') + '/Sample Messages/Request.xml').text.replaceAll('\"', '\\\\\"').replaceAll('\\n', ''),)}}

额外替换换行符是为了避免JSON结构因换行出现语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:15:23