xml2js - Error: key $ must not start with '$'
xml2js - Error: key $ must not start with '$'
我正在使用这个 javascript 库 xml2js
将 XML 文件解析为 JSON 格式。这是代码:
const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');
const parser = new xml2js.Parser();
fs.readFile('data.xml', (err, data) => {
parser.parseString(data, (err, result) => {
var jsonFile = util.inspect(result, false, null, true);
console.log(jsonFile);
});
});
解析有效。但是有一个问题。 $
符号添加到 as 字段中。这是 XML 数据。
<?xml version="1.0" encoding="UTF-8"?><PFA><Entity id="123" action="add" date="31-Jul-2009"><ActiveStatus>Inactive</ActiveStatus></Entity></PFA>
生成的 json 如下:
{
PFA: {
Entity: [
{
'$': { id: '123', action: 'add', date: '31-Jul-2009' },
ActiveStatus: [ 'Inactive' ]
}
]
}
}
当我尝试将其保存到 mongodb 时,出现错误 Error: key $ must not start with '$'
const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');
const parser = new xml2js.Parser();
fs.readFile('data.xml', (err, data) => {
parser.parseString(data, (err, result) => {
var jsonFile = util.inspect(result, false, null, true);
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("db");
dbo.collection("entity").insertOne(result, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
});
});
});
MongoDB 中不允许以 $ 开头的字段,因为该语法是为运算符保留的。同样,不允许在字段名称中使用点,因为它们用于文档遍历(点表示法)。
您需要更改要保留的数据。
用这个配置解决了
const parser = new xml2js.Parser({ mergeAttrs: true, explicitArray: false});
关于 xml2js 的完整文档是 here
我正在使用这个 javascript 库 xml2js
将 XML 文件解析为 JSON 格式。这是代码:
const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');
const parser = new xml2js.Parser();
fs.readFile('data.xml', (err, data) => {
parser.parseString(data, (err, result) => {
var jsonFile = util.inspect(result, false, null, true);
console.log(jsonFile);
});
});
解析有效。但是有一个问题。 $
符号添加到 as 字段中。这是 XML 数据。
<?xml version="1.0" encoding="UTF-8"?><PFA><Entity id="123" action="add" date="31-Jul-2009"><ActiveStatus>Inactive</ActiveStatus></Entity></PFA>
生成的 json 如下:
{
PFA: {
Entity: [
{
'$': { id: '123', action: 'add', date: '31-Jul-2009' },
ActiveStatus: [ 'Inactive' ]
}
]
}
}
当我尝试将其保存到 mongodb 时,出现错误 Error: key $ must not start with '$'
const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');
const parser = new xml2js.Parser();
fs.readFile('data.xml', (err, data) => {
parser.parseString(data, (err, result) => {
var jsonFile = util.inspect(result, false, null, true);
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("db");
dbo.collection("entity").insertOne(result, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
});
});
});
MongoDB 中不允许以 $ 开头的字段,因为该语法是为运算符保留的。同样,不允许在字段名称中使用点,因为它们用于文档遍历(点表示法)。
您需要更改要保留的数据。
用这个配置解决了
const parser = new xml2js.Parser({ mergeAttrs: true, explicitArray: false});
关于 xml2js 的完整文档是 here