如何将响应中的 xml 列表保存到 JMeter 中的 csv 文件

how to save a xml list from response to a csv file in JMeter

我的一个测试使用循环控制器、CSV 数据集配置和 If 控制器来遍历 csv 列表以使用 csv 文件中定义的多个参数执行一个请求。

我想更改此测试用例以使用我从 xml 格式的 GET 响应中获取的参数列表。 例如使用这个 xml 列表:http://www.w3schools.com/xml/cd_catalog.xml 现在我想遍历所有 < TITLE > 值。

我尝试使用 'Save Responses to a file' 侦听器保存响应,然后使用 BeanShell 侦听器读取文件并将其转换为仅包含 < TITLE > 值的 csv 列表。但我不确定如何在 BeanShell 侦听器中进行此转换部分。

import org.apache.jmeter.services.FileServer; 
import org.apache.commons.io.FileUtils;

File xmlFile = new File(FileServer.getFileServer().getBaseDir()+"/resources/data/csv/response1.xml", "UTF-8");
String fileData = FileUtils.readFileToString(xmlFile);
fileData = fileData.replaceAll("<?xml version="1.0" encoding="UTF-8"?>", "");
fileData = fileData.replaceAll("<CATALOG>", "");
//...

FileUtils.writeStringToFile(xmlFile, fileData);

/*
f = new FileOutputStream(FileServer.getFileServer().getBaseDir()+"/resources/data/csv/parameterlist.csv", true); 
p = new PrintStream(f); 
p.println(fileData);
p.close();
f.close();
*/

一定有一些解决方案在所有 元素上使用正则表达式、xpath 或 XSL 转换,或者有没有我没有想到的更简单的方法?</p> </section> <div> <section class="answer"> <p>找到了适合我的目的的不同且更简单的方法:</p> <ul> <li>Get 请求获取 xml 列表。 <ul> <li>添加 XPath 提取器</li> <li>参考名称:'titles'</li> <li>XPAth 查询:'//title'</li> </ul></li> <li>ForEach 控制器 <ul> <li>输入变量前缀:'titles'</li> <li>输出变量名:'title'</li> </ul></li> </ul> </section> </div> </div> <div class="line"></div> <div id="footer">©2023 WhoseBug</div> </body> </html>