Nodejs:如何将xml转换为CSV| Javascript

309 阅读2分钟

nodejs to Convert xml to CSV in Nodejs example

在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的多种方法。