如何在Postman的Pre-request Script中处理XML

14次阅读

postman Pre-request Script 中处理 xml 需用 javaScript 构建字符串并赋值变量或请求体;支持静态模板插值、动态循环拼接、jsON 轻量转 XML,并须手动设置 Content-Type 为 application/xml。

如何在Postman的Pre-request Script中处理XML

在 Postman 的 Pre-request Script 中处理 XML,核心是用 javascript 构建或修改 XML 字符串,并将其赋值给环境变量全局变量或直接写入请求体(如 Body → raw → XML)。Postman 本身不提供原生 XML 解析器,所以需手动拼接、模板替换或借助简单字符串操作——无需引入外部库,但要注意格式合法性与转义。

构建静态 XML 请求体

适合结构固定、仅需替换少量字段的场景。用反引号(`)写多行字符串,配合环境变量插值:

const xmlBody = `    {{order_id}}   {{customer_name}}   {{amount}} `;  pm.variables.set("xml_payload", xmlBody);

然后在 Request Body → raw 中选择 XML,并填入:{{xml_payload}}

动态生成含循环或条件的 XML

当需要根据数组生成多个节点(如多个 ),可用 JavaScript 拼接:

const items = [   { id: "101", name: "Laptop", qty: 2 },   { id: "102", name: "Mouse", qty: 5 } ];  const itemsXml = items.map(item =>    `     ${item.id}     ${pm.variables.replaceIn(item.name)}     ${item.qty}   ` ).join("");  const fullXml = `    
ORD-2024-001
${itemsXml}
`; pm.request.body.raw = fullXml;

注意:对可能含特殊字符(如 &)的变量,建议用 pm.variables.replaceIn() 做基础替换,或自行实现简单转义函数。

json 转换为 XML(轻量级)

若已有 JSON 数据想转成扁平 XML(无嵌套/属性),可写简短转换逻辑:

const jsonData = {   "name": "Alice",   "email": "alice@example.com",   "active": true };  function jsonToXml(obj) {   return Object.entries(obj)     .map(([k, v]) => `<${k}>${v}`)     .join("n"); }  const xml = `n${jsonToXml(jsonData)}n`; pm.variables.set("user_xml", xml);

该方法适用于键值简单、无数组/深层嵌套的场景。复杂结构建议在测试脚本或外部工具中预处理。

设置 Content-Type 并确保发送正确

XML 请求必须声明正确的请求头,否则服务端可能解析失败:

  • 在 Pre-request Script 中添加:pm.request.headers.add({key: 'Content-Type', value: 'application/xml'});
  • 如果接口要求 text/xml,请按文档调整值
  • 避免在 Body 中选错类型:务必在 Body → raw 下拉菜单中选择 XML(它会自动设 header,但手动设更可靠)

text=ZqhQzanResources