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

Node.js项目:如何将对象数组转XML?json2xml工具异常问题

Node.js 使用 json2xml 转换对象数组为XML时,生成独立标签的解决方案

问题根源

你的原始JSON数据存在冗余嵌套层级:agents字段是仅含单个对象的数组,该对象内部又嵌套了agent数组。json2xml解析时会将外层数组映射为<agents>标签,随后把内层agent数组的所有属性直接合并到同一个<agent>标签下,导致所有agent数据堆叠在一起。

解决步骤

1. 预处理JSON数据,调整结构

先移除冗余的嵌套层级,让agents直接指向agent对象的数组,supervisors同理:

const json2xml = require('json2xml');

// 原始JSON数据
const originalData = {
    "refURL": "/unifiedconfig/config/agentteam/5022",
    "changeStamp": 12,
    "agentCount": 7,
    "description": "Cumulus Outbound Team",
    "name": "CumulusOutbound",
    "peripheral": {
        "id": 5000,
        "name": "CUCM_PG_1"
    },
    "peripheralId": 5000,
    "supervisorCount": 1,
    "agents": [{
        "agent": [{
            "refURL": "/unifiedconfig/config/agent/5197",
            "agentId": "1085",
            "firstName": "Owen",
            "lastName": "Harvey",
            "userName": "oharvey"
        }, {
            "refURL": "/unifiedconfig/config/agent/5201",
            "agentId": "1320",
            "firstName": "Bruce",
            "lastName": "Wayne",
            "userName": "bwayne"
        }]
    }],
    "supervisors": [{
        "supervisor": [{
            "refURL": "/unifiedconfig/config/agent/5174",
            "agentId": "1082",
            "firstName": "Rick",
            "lastName": "Barrows",
            "userName": "rbarrows@dcloud.cisco.com"
        }]
    }]
};

// 预处理:移除冗余嵌套层级
const processedData = {
    agentTeam: {
        ...originalData,
        // 将agents从[{agent: [...]}]改为直接的agent数组
        agents: originalData.agents[0].agent,
        // 同理处理supervisors
        supervisors: originalData.supervisors[0].supervisor
    }
};

2. 使用json2xml转换并配置格式

通过配置prettyPrint和缩进参数,保证生成的XML格式与期望一致:

const xmlOutput = json2xml(processedData, {
    prettyPrint: true,
    indent: '   ', // 匹配期望的3空格缩进
    header: false // 不需要XML声明头
});

console.log(xmlOutput);

效果验证

转换后的XML会生成独立的<agent>标签,每个标签包含对应agent的属性,完全符合你期望的格式:

<agentTeam>
   <refURL>/unifiedconfig/config/agentteam/5022</refURL>
   <changeStamp>12</changeStamp>
   <agentCount>7</agentCount>
   <description>Cumulus Outbound Team</description>
   <name>CumulusOutbound</name>
   <peripheral>
      <id>5000</id>
      <name>CUCM_PG_1</name>
   </peripheral>
   <peripheralId>5000</peripheralId>
   <supervisorCount>1</supervisorCount>
   <agents>
      <agent>
         <refURL>/unifiedconfig/config/agent/5197</refURL>
         <agentId>1085</agentId>
         <firstName>Owen</firstName>
         <lastName>Harvey</lastName>
         <userName>oharvey</userName>
      </agent>
      <agent>
         <refURL>/unifiedconfig/config/agent/5201</refURL>
         <agentId>1320</agentId>
         <firstName>Bruce</firstName>
         <lastName>Wayne</lastName>
         <userName>bwayne</userName>
      </agent>
   </agents>
   <supervisors>
      <supervisor>
         <refURL>/unifiedconfig/config/agent/5174</refURL>
         <agentId>1082</agentId>
         <firstName>Rick</firstName>
         <lastName>Barrows</lastName>
         <userName>rbarrows@dcloud.cisco.com</userName>
      </supervisor>
   </supervisors>
</agentTeam>

内容的提问来源于stack exchange,提问作者Ganesh Putta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:20:22