gpt4 book ai didi

javascript - Node JS 的 SQL 外部化(XML 解析)

转载 作者:行者123 更新时间:2023-12-02 16:20:57 24 4
gpt4 key购买 nike

假设我有以下文件:

<sql-requests>
<sql-request id="insert_product"><![CDATA[INSERT INTO products]]></sql-request>
<sql-request id="insert_account"><![CDATA[INSERT INTO accounts]]></sql-request>
<sql-request id="insert_news"><![CDATA[INSERT INTO news]]></sql-request>
</sql-requests>

我想在 Node 中解析这个xml,然后像这样访问CDATA:

var sql = parsedXml.insert_product; // must return 'INSERT INTO products

最好的方法是什么?根据我的喜好,我应该使用哪个包?我找不到可以读取 CDATA 值的包。

回答(非常感谢 Felix 提供了如何做到这一点的想法)

var parseString = require('xml2js').parseString;
var fs = require('fs');
var content = fs.readFileSync(__dirname + '/sql-requests.xml');

var sql = {};

parseString(content, function (err, result) {

var queries = result['sql-requests']['sql-request'];

queries.forEach(function(query){
var id = query.$.id, request = query._.trim();
sql[id] = request;
});

});

现在,sql["insert_product"] 将返回 INSERT INTO products

最佳答案

我不知道是否有一个 XML 解析器可以创建 id -> element 映射,但是 xml2js 肯定可以与 CDATA 部分一起使用,并且您可以轻松创建这样的假设您的结构与问题中一样简单,请绘制自己的 map :

var parseString = require('xml2js').parseString;

parseString(xml, function (err, result) {
var queries = result['sql-requests']['sql-request'].reduce(queries, query) {
queries[query.$.id] = query._;
return queries;
}, {});
// queries is not an id -> content map
});

关于javascript - Node JS 的 SQL 外部化(XML 解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29131304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com