如何使用Node.js编辑XML文件
时间:2022-07-28
本文章向大家介绍如何使用Node.js编辑XML文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
由于XML仍然继续用作数据交换格式(主要是在企业应用程序中),因此了解如何以编程方式操纵XML文件的内容可能非常有用。 您可以轻松地在Node.js中编写一个小的脚本来立即进行更改,而不必手动编辑数百行XML。
在 之前的文章中,我们研究了如何通过使用开源 xml2js
模块将XML文件转换为Node.js中的JSON对象。 今天,您将学习如何使用Node.js编辑XML文件。
基本设置
首先,通过在终端中键入以下命令,将xml2js
模块添加到您的Node.js应用程序中:
$ node install xml2js --save
接下来,创建一个名为index.js
的新JavaScript文件,其内容如下:
const fs = require("fs");
// read XML file
fs.readFile("databases.xml", "utf-8", (err, data) => {
if (err) {
throw err;
}
console.log(data);
});
上面的代码从磁盘读取XML文件并将其打印在控制台上。 这是一个需要更新的XML文件的示例:
databases.xml
<?xml version="1.0" encoding="UTF-8" ?>
<databases>
<database>
<name>MySQL</name>
<type>RDBMS</type>
</database>
<database>
<name>MongoDB</name>
<type>NoSQL</type>
</database>
<database>
<name>Neo4j</name>
<type>Graph DB</type>
</database>
</databases>
将XML转换成JSON
由于我们现在能够将XML文件读取为字符串,因此可以使用xml2js.parseString()
方法轻松地将其转换为JSON对象。
让我们更新上面的示例代码,以将XML解析包括到JSON:
const fs = require("fs");
const xml2js = require('xml2js');
// read XML file
fs.readFile("databases.xml", "utf-8", (err, data) => {
if (err) {
throw err;
}
// convert XML data to JSON object
xml2js.parseString(data, (err, result) => {
if (err) {
throw err;
}
// print JSON object
console.log(JSON.stringify(result, null, 4));
});
});
如果运行上面的代码,则应该在控制台上看到打印出以下JSON对象:
{
"databases": {
"database": [
{
"name": [
"MySQL"
],
"type": [
"RDBMS"
]
},
{
"name": [
"MongoDB"
],
"type": [
"NoSQL"
]
},
{
"name": [
"Neo4j"
],
"type": [
"Graph DB"
]
}
]
}
}
编辑XML
用JavaScript编辑JSON对象非常简单。 让我们用另一个称为ArangoDB
的图形数据库替换Neo4j
数据库:
// replace `Neo4j` with `ArangoDB`
result.databases.database[2].name = 'ArangoDB';
您还可以将新数据库添加到现有数据库列表中:
// add a new database to list
const postgres = {
name: 'PostgreSQL',
type: 'RDBMS'
};
result.databases.database.push(postgres);
经过以上修改,我们更新后的示例代码如下所示:
const fs = require("fs");
const xml2js = require('xml2js');
// read XML file
fs.readFile("databases.xml", "utf-8", (err, data) => {
if (err) {
throw err;
}
// convert XML data to JSON object
xml2js.parseString(data, (err, result) => {
if (err) {
throw err;
}
// replace `Neo4j` with `ArangoDB`
result.databases.database[2].name = 'ArangoDB';
// add a new database to list
const postgres = {
name: 'PostgreSQL',
type: 'RDBMS'
};
result.databases.database.push(postgres);
// print JSON object
console.log(JSON.stringify(result, null, 4));
});
});
将JSON转换成XML
现在,我们已经成功修改了JSON对象,我们可以将其转换回XML字符串,最后将其写入文件:
const fs = require("fs");
const xml2js = require('xml2js');
// read XML file
fs.readFile("databases.xml", "utf-8", (err, data) => {
if (err) {
throw err;
}
// convert XML data to JSON object
xml2js.parseString(data, (err, result) => {
if (err) {
throw err;
}
// replace `Neo4j` with `ArangoDB`
result.databases.database[2].name = 'ArangoDB';
// add a new database to list
const postgres = {
name: 'PostgreSQL',
type: 'RDBMS'
};
result.databases.database.push(postgres);
// convert JSON objec to XML
const builder = new xml2js.Builder();
const xml = builder.buildObject(result);
// write updated XML string to a file
fs.writeFile('new-databases.xml', xml, (err) => {
if (err) {
throw err;
}
console.log(`Updated XML is written to a new file.`);
});
});
});
仅此而已。 运行上面的代码,您应该在与Node.js脚本文件相同的目录中看到一个由更新的XML生成的新XML文件。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式之代理模式(由浅入深)
- jquery param 数据 数组参数序列化
- 3 CPU缓存一致性协议MESi
- 4. synchronized详解
- 4.2 synchronized补充
- 解决 Maven 使用Tomcat 部署报错 Tomcat return http status error: 405, Reason Phrase: Method Not Allowed:
- spring5源码 -- IOC容器设计理念和核心注解的作用
- 1. spring5源码 -- Spring整体脉络 IOC加载过程 Bean的生命周期
- Cookie详解
- 2.1 Spring5源码--源码编译
- WebLogic 10 容器通过JNDI切换数据源
- 2.2 spring5源码 -- ioc加载的整体流程
- Js 删除 指定Domin 指定 path 下的 cookie中指定的内容
- 适配器模式与装饰器模式的区别
- java堆内存详解