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

453 阅读3分钟

本教程介绍了如何在javascript和Nodejs应用程序中将XML转换为JSON。

XML是一种扩展标记语言,它包含了父标签关系中的属性或标签。JSOn是一种简单的格式,它有一个键和值对,包含在parenthiss{}

两者都用于存储不同类型的数据,在nodejs和javascript中没有手动转换类型的问题。

创建一个Nodejs项目

我们将从头开始创建一个nodejs应用程序的创建。

让我们使用npm init 命令创建一个nodejs应用程序。

npm init or 
npm init -Y

上述命令初始化并创建一个nodejs应用程序的默认值 该命令创建nodejs应用程序的所有默认值

如何在Nodejs中转换XML到JSON

有很多npm库可以用来解析xml并返回json格式。

使用xml2json npm库

xml2json 是一个npm库,用于解析xml文件的功能有限。

这个解析器并不解析那些有

  • CData部分
  • 评论
  • 命名空间保留
  • 属性

接下来,使用以下命令将xml2json 依赖关系安装到应用程序中

npm install xml2json --save

这将在package.json中添加依赖性,如下所示

{
  "name": "Nodejs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "xml2json": "^0.12.0"
  }
}

让我们写一段代码,将XML解析为JSON对象

让我们声明xml文件,内容如下

user.xml



     12
     john
     admin
     false
     2000-10-01


下面是读取xml文件并转换为JSON的步骤

  • 包括xml2json 模块,使用require 关键字,返回一个对象
  • 我们必须从文件系统中读取文件,所以fs module 是Nodejs的内置模块,必须使用 。require
  • fs 模块中读取带有readFile 的文件到内存中。
  • readFile 接受 , 和 函数。filepath encoding callback
  • 回调函数被调用,并带有数据和错误。
  • 这将以异步的方式读取文件数据,并将对象放入data 变量。
  • xml2json 模块有 方法,读取 并返回 数据。toJson xml JSON

下面是一个将xml转换成json的异步例子parseXmlAsJsonAsync.js


let xmlParser = require('xml2json');
let fs = require('fs');

fs.readFile('user.xml', 'utf8', function(err, data) {
   if (err) {
    console.error(err)
    return
  }
     let jsonData=xmlParser.toJson(data);
    console.log(jsonData);

});

执行parseXmlAsJsonAsync.js将xml文件内容返回到JSON字符串。这里是同步的版本,它按顺序运行每一行代码。

这有一个缺点,当我们有一个大的数据设置,如1000MB的文件大小时,请求必须等待更长的时间。

fs模块readFileSync ,该方法按顺序读取数据,并在返回数据给用户之前将其加载到内存中。

parseXmlAsJsonsync.js

let xmlParser = require('xml2json');
let fs = require('fs');

try {
  const xmlData = fs.readFileSync('user.xml', 'utf8')
let jsonData=xmlParser.toJson(xmlData);
    console.log(jsonData);
} catch (err) {
  console.error(err)
}

快速xml解析器

fast-xml-parser是一个强大的XML内容操作库,具有许多其他功能。

它有许多功能

  • 验证xml
  • 将xml转换成/从javascript和JSOn中转换出来
  • 处理大文件在性能方面很好
  • 解析CData部分
  • 支持默认的所有类型,包括布尔型
  • 解析属性和注释
  • 它提供了npm以及CLI用于
npm install fast-xml-parser

你可以使用npm install命令来安装package.json

{
  "name": "Nodejs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "fast-xml-parser": "^3.19.0",
  }
}

下面是一个使用fast-xml-parser 的例子 它有parse 方法,接受以下参数

它有三个参数

  • xml数据
  • 选项 默认配置可以被传递
  • true - 启用或禁用内部xml验证

let xmlParser = require('xml2json');
var parser = require('fast-xml-parser');

let fs = require('fs');


fs.readFile('user.xml', 'utf8', function(err, data) {
    if (err) throw err;
       var jsonData = parser.parse(data,null, true);

    console.log(jsonData);

});

输出

{
  users: {
    user: {
      id: 12,
      username: 'john',
      role: 'admin',
      active: false,
      create_date: '2000-10-01'
    }
  }

总结

总结一下,我们已经学会了使用npm库将xml转换为json的多种方法。xml2json 是功能有限的基本库,可用于简单的转换和较小尺寸的文件,而fast-xml-parser 库是一个强大的库,具有更多的功能。这可以用于验证和大尺寸文件的性能。