You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xml2js构建XML:如何生成单products节点包含多artnr子节点

使用xml2js生成包含多子节点的XML数组问题解决

问题描述

期望生成的XML结构:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<orderdetails>
  .....
  <products>
    <artnr>05633310000</artnr>
    <artnr>05633310000</artnr>
  </products>
</orderdetails>

实际生成的错误XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<orderdetails>
  <products>
    <artnr>05633310000</artnr>
  </products>
  <products>
    <artnr>05633310000</artnr>
  </products>
</orderdetails>

已尝试设置explicitArray: true但无效,需实现单个<products>节点包含多个<artnr>子节点。

解决方案

问题核心是JS对象的结构错误,explicitArray是xml2js解析XML转JS对象的配置,不影响生成XML的规则。要达到预期效果,需按以下方式构建数据:

正确的JS数据结构

const data = {
  orderdetails: {
    // 此处填写orderdetails下的其他字段
    products: {
      artnr: ["05633310000", "05633310000"]
    }
  }
};

生成XML的代码示例

const xml2js = require('xml2js');
const builder = new xml2js.Builder();
const xml = builder.buildObject(data);
console.log(xml);

关键注意点

  • xml2js生成XML时,会自动将JS数组转为同一父节点下的多个同名子节点
  • 之前错误是因为把products设为数组(如products: [{artnr: "xxx"}, {artnr: "xxx"}]),导致生成多个<products>节点
  • 必须保证products是单个对象,其内部的artnr为数组类型

内容的提问来源于stack exchange,提问作者Chris Hunter-Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:02:25