在Node中将XML解析为JSON时,使用Lodash循环遍历https.get

时间:2016-04-29 01:57:40

标签: json xml node.js lodash

我试图在Node中解析XML到JSON。我使用的是xml2js。我想将Lodash合并到循环遍历数组中的每个数字,并使用相应的url将XML转换为JSON。当我使用下面的代码时,出现clang -Wall -Wextra -c main.c clang -Wall -Wextra -c weird.c clang -o program main.o weird.o 错误。知道我做错了吗?

Non-whitespace before first tag

1 个答案:

答案 0 :(得分:0)

老实说,LoDash中的forEach助手有点傻。 forEach是任何Array实例的原型方法。一个问题是这些功能助手不是为处理异步流量控制而设计的。

虽然有十几种处理流量控制的方法,但最简单的方法可能是使用caolan/async模块的map()方法。

你的代码看起来像是:

var no = [78787878,78787879, 787878780];

async.map(no, function(cb) {
    https.get('https://tsdrapi.uspto.gov/ts/cd/casestatus/'+no+'/info.xml', function (res) {
        var response_data = '';
        res.on('data', function (chunk) {
            response_data += chunk;
        });
        res.on('end', function () {
            parser.parseString(response_data, function (err, result) {
                if (err) {
                    cb(err);
                } else {
                    cb(null, result);
                }
            });
        });
        res.on('error', cb);
    })
}, function(err, results) {
    if(err) {
        console.log("Error occured: ", err);
    }
    else {
        console.log("Results(array): ", results);
    }
});

这里的区别在于异步将数组映射到具有回调的函数。这样,您可以将每个请求的响应收集到一个数组中,并在每个请求响应时触发回调。如果其中一个错误消失,则进程停止并触发记录错误的最终回调(或者您可以编写逻辑来处理另一种方式)。