如何在Postman中通过循环遍历XML响应提取全部大陆信息
Postman中循环遍历SOAP XML响应全量获取大陆实体的实现
响应解析前置步骤
Postman内置XML DOM解析能力,可直接对SOAP格式响应报文做节点级操作,无需引入外部依赖。首先跳过外层的soap:Envelope、soap:Body嵌套层级,定位到存放所有大陆实体的父容器节点。
核心解析代码:
// 解析响应XML为可操作的DOM文档对象 const xmlDom = pm.response.toXML(); // 定位大陆列表的父节点,匹配节点时无需添加命名空间前缀m: const continentRoot = xmlDom .get('ListOfContinentsByNameResponse') .get('ListOfContinentsByNameResult'); // 提取父节点下所有大陆实体的节点集合 const continentNodes = continentRoot.find('tContinent');
循环遍历全量实体的实现
拿到全量大陆节点集合后,通过固定边界循环逐节点提取字段,确保无遗漏获取所有大陆信息。
- 初始化数据存储结构,设置循环终止条件
// 存储所有大陆实体信息的数组 const continentDataList = []; // 大陆节点总数作为循环终止判断依据 const continentTotal = continentNodes.length; - 按索引逐次遍历节点,提取字段值存入数组
for (let i = 0; i < continentTotal; i++) { // 获取当前循环位的大陆节点 const currentNode = continentNodes[i]; // 提取大陆编码、名称字段的文本值 const continentInfo = { code: currentNode.get('sCode').textContent, name: currentNode.get('sName').textContent }; // 将单条记录追加到全量数据数组 continentDataList.push(continentInfo); } - 可选操作:将解析完成的全量数据写入Postman环境变量,供后续接口流程复用
pm.environment.set("full_continent_list", JSON.stringify(continentDataList));
实操注意事项
- 节点匹配规则:Postman的XML解析器会自动剥离所有节点的命名空间(如报文中的
m:、soap:),调用get()/find()方法时直接写不带前缀的节点名即可,若手写带前缀的节点名(如m:tContinent),会出现节点匹配失败、取值为空的问题。 - 循环过程中不要直接修改原始DOM对象,所有提取的字段值要存入独立的普通JS数组,避免DOM内存引用问题导致的取值异常。
- 如需配合Collection Runner/Newman做批量接口调用,可直接读取环境变量中存储的
full_continent_list数组,逐次拆分后将大陆编码作为入参传递给后续查询接口,无需手动维护参数列表。
内容的提问来源于stack exchange,提问作者Daxesh
相关产品推荐
相关产品推荐

