如何将JMeter JMX元素字符串直接解析为对应的Java对象
解决方案
直接使用JMeter内置的SaveService工具类即可完成解析,这个类本身就是为了读写JMeter的jmx格式配置设计的,不需要手动反射或者逐个字段赋值,具体操作如下:
前置准备
确保项目中引入对应版本的JMeter核心依赖,以Maven为例:
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>替换为你使用的JMeter版本号,例如5.5</version> </dependency>
代码示例
import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.util.JMeterUtils; import java.io.ByteArrayInputStream; import java.io.InputStream; public class JmxParserDemo { public static void main(String[] args) throws Exception { // 初始化JMeter运行环境,全局仅需执行一次;如果是在JMeter插件上下文内运行可跳过该步骤 JMeterUtils.loadJMeterProperties("替换为你的jmeter.properties文件实际路径"); JMeterUtils.initLocale(); // 你的ResultCollector配置XML字符串,注意要先把XML转义符(如<)还原为正常尖括号 String collectorXml = "你贴的ResultCollector节点XML内容"; // 字符串转输入流后直接解析 try (InputStream inputStream = new ByteArrayInputStream(collectorXml.getBytes())) { ResultCollector resultCollector = (ResultCollector) SaveService.loadElement(inputStream); // 可直接验证解析结果,例如输出配置的采样项是否正确 System.out.println(resultCollector.getSaveConfig().getLatency()); } } }
补充说明
如果使用的是4.0以下的旧版本JMeter,没有loadElement方法,可以把当前XML片段包裹在标准的<jmeterTestPlan>根节点内,调用SaveService.loadTree()方法加载整棵配置树后再提取对应ResultCollector对象即可。
内容的提问来源于stack exchange,提问作者wo4wangle
相关产品推荐
相关产品推荐

