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

Postman Pre-request Script 中处理 XML 需用 JavaScript 构建字符串并赋值变量或请求体;支持静态模板插值、动态循环拼接、JSON 轻量转 XML,并须手动设置 Content-Type 为 application/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-2025-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,但手动设更可靠)