
在Javascript中,没有直接的解决方案可以将XML转换为JSON,我们有npm库@wmfs/xml2csv。
首先,让我们使用npm init命令创建一个nodejs应用程序。
npm init
npm init -Y
该命令创建了一个具有所有默认值的nodejs应用程序。
接下来,使用以下命令将@wmfs/xml2csv 依赖关系安装到应用程序中
npm install xml2csv --save
这将在package.json 中添加dependency ,如下所示
"dependencies": {
"@wmfs/xml2csv": "^1.23.0",
}
让我们为这个例子声明xml文件
<users>
<user id="u12">
<id>12</id>
<username>john</username>
<role>admin</role>
<active>false</active>
<create_date>2000-10-01</create_date>
</user>
</users>
如何在Nodejs中转换XML到CSV
- 首先导入模块
@wmfs/xml2csv,加载模块并创建一个对象xml2csv - 用
options对象和回调函数创建一个xml2csv对象
Options 对象包含以下属性
-
xmlPath: 输入xml路径位置和xml文件名 -
csvPath: 输出csv路径位置 -
rootXMLElement: 读取每个XML记录的根标签,在我们的例子user.xml文件中,我们有一个包含数据的user标签。 -
headerMap: 将xml标签映射到csv列 HeaderMap声明包含字段定义
[xmlTag, csvHeader, type, parent],
-
xmlTag: 要转换为csv字段的xml标签,即id、username、role、active
-
csvHeader: xsv内容字段
-
type:字段的类型日期、字符串和数字
-
parent:可选的xml标签的父标签
-
回调函数。调用回调,包含错误和结果 error--如果出现错误,返回一个错误对象 result--处理的记录数
将XML转换为CSV的回调例子
调用回调函数,第一个参数是错误,第二个参数是结果。
用异步操作将XML转换为CSV的例子
const xml2csv = require("@wmfs/xml2csv");
xml2csv(
{
xmlPath: 'user.xml',
csvPath: 'csvfile.csv',
rootXMLElement: 'user',
headerMap: [
['id', 'id', 'integer'],
['username', 'username', 'string'],
['role', 'role', 'string'],
['active', 'active', 'boolean'],
]
},
function (err, result) {
console.log(err);
console.log(result);
}
)
输出:用以下数据创建csvfile.csv文件
id,username,role,active
12,"john","admin",false
在nodejs中把xml转换为csv的例子
Promise.then 包含两个函数,第一个函数是用 promise执行的,第二个函数是用 case调用的, 包含错误函数,在promise错误时被调用,这里是语法resolved rejected Promise.catch
promise.then(
function(result) { // Calls success result },
function(error) { // calls an error case }
).catch(function(promiseerror){
// error case
});
上面的内容可以重写,替换掉lambda表达式,将代码简化。
promise.then(
(result)=>{
console.log("XML to CSV conversion completed",result);
},(error)=>{
console.log("XML to CSV conversion rejected",error);
}
)
.catch((error)=>{
// error case
});
下面是一个简化版本的例子
xml2csvPromise.js
const xml2csv = require("@wmfs/xml2csv");
xml2csv(
{
xmlPath: 'user.xml',
csvPath: 'csvfile.csv',
rootXMLElement: 'user',
headerMap: [
['id', 'id', 'integer'],
['username', 'username', 'string'],
['role', 'role', 'string'],
['active', 'active', 'boolean'],
]
},).then((result)=>{
console.log("XML to CSV conversion completed",result);
},(err=>{
console.log("error conversion rejected",err);
}))
.catch((err)=>{
console.log("Conversion Failed",err);
}));
结论
通过实例学习了将xml转换为csv的多种方法。