You need to enable JavaScript to run this app. 如何在Postman中通过循环遍历XML响应提取全部大陆信息
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 06:54:08