1

我从 mongoDB 得到一个数组,格式如下:

const data = await db.collection('myCollection').find(filterQuery).project(projection).toArray();
data.map(record => { record._id = record._id.toString()  }); // Converting objectId to string
// Data is: 
[
    {
        "_id": "60bf71cb31657b3e2c5e8d3c",
        "id": 1,
        "productName": "Phillips L8FB86ES",
        "copy1": "De beste wasmachine voor jou.",
        "copy2": "Vandaag besteld.",
        "copy3": "Morgen wassen.",
    },
   ...
]

我想将此数组转换为 XML

const convert = require('xml-js');
transformed = convert.json2xml(data, { compact: true, ignoreComment: true, spaces: 4 });

在此过程中我没有收到任何错误,但是我将此文件上传到 cloudstorage 并且上传到那里的文件已损坏。我收到这样的错误:

This page contains the following errors:
error on line 1 at column 2: StartTag: invalid element name
Below is a rendering of the page up to the first error.

我真的不知道它有什么问题。我将不胜感激任何帮助。

注意:我也试过xml2jsfast-xml-parserjstoxml包。但结果并没有改变。

笔记2:

当我登录时transformed(转换的 XML 对象)

<0>
    <_id>60bf71cb31657b3e2c5e8d3c</_id>
    <id>1</id>
    <productName>Phillips L8FB86ES</productName>
    <copy1>De beste wasmachine voor jou.</copy1>
    <copy2>Vandaag besteld.</copy2>
    <copy3>Morgen wassen.</copy3>
</0>
</1>
   ...

编辑 3:我了解到 XML 标签不能以数字开头。那么如何将数组转换为 XML 呢?

4

1 回答 1

2

FXP (fast-xml-parser) 默认使用数组的索引作为标记名解析 JS 数组。覆盖此行为;

const parser = new j2xParser({
    rootNodeName: "records"
});
const result = parser.parse(cars);
于 2021-10-25T04:26:41.887 回答