前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Node.js编辑XML文件

如何使用Node.js编辑XML文件

作者头像
ccf19881030
发布2020-10-26 17:35:57
7.1K0
发布2020-10-26 17:35:57
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客

由于XML仍然继续用作数据交换格式(主要是在企业应用程序中),因此了解如何以编程方式操纵XML文件的内容可能非常有用。 您可以轻松地在Node.js中编写一个小的脚本来立即进行更改,而不必手动编辑数百行XML。 在 之前的文章中,我们研究了如何通过使用开源 xml2js模块将XML文件转换为Node.js中的JSON对象。 今天,您将学习如何使用Node.js编辑XML文件。

基本设置

首先,通过在终端中键入以下命令,将xml2js模块添加到您的Node.js应用程序中:

代码语言:javascript
复制
$ node install xml2js --save

接下来,创建一个名为index.js的新JavaScript文件,其内容如下:

代码语言: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

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
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对象:

代码语言:javascript
复制
{
    "databases": {
        "database": [
            {
                "name": [
                    "MySQL"
                ],
                "type": [
                    "RDBMS"
                ]
            },
            {
                "name": [
                    "MongoDB"
                ],
                "type": [
                    "NoSQL"
                ]
            },
            {
                "name": [
                    "Neo4j"
                ],
                "type": [
                    "Graph DB"
                ]
            }
        ]
    }
}

编辑XML

用JavaScript编辑JSON对象非常简单。 让我们用另一个称为ArangoDB的图形数据库替换Neo4j数据库:

代码语言:javascript
复制
// replace `Neo4j` with `ArangoDB`
result.databases.database[2].name = 'ArangoDB';

您还可以将新数据库添加到现有数据库列表中:

代码语言:javascript
复制
// add a new database to list
const postgres = {
    name: 'PostgreSQL',
    type: 'RDBMS'
};

result.databases.database.push(postgres);

经过以上修改,我们更新后的示例代码如下所示:

代码语言:javascript
复制
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字符串,最后将其写入文件:

代码语言:javascript
复制
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文件。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本设置
  • 将XML转换成JSON
  • 编辑XML
  • 将JSON转换成XML
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档