我正在尝试导出一个从端点抓取XML的函数,解析它并将其转换为json对象。我无法让json对象返回。我很熟悉解析正在运行异步并需要回调来返回值。我似乎无法弄清楚如何正确地写出来。
另一个注意事项......导出此功能的“最佳”方法是什么?我正在尝试创建一个实用程序,我发送任何产生xml的端点,然后它吐出一个json。我是否需要在导出的函数中包含我的需求?或者我应该专门为以下方法保留它?
getXmlToObj.js
module.exports = function getXML(xmlUrl,callback){
// Requires --------------------------------------------------------------------
var https = require('https'),
xml2js = require('xml2js'),
parser = new xml2js.Parser();
// End Requires ----------------------------------------------------------------
// We append the XML as a string to data
var data = "";
//error check on xml2js parse
parser.on('error', function(err) { console.log('Parser error', err); });
https.get(xmlUrl, function(res) {
if (res.statusCode >= 200 && res.statusCode < 400) {
res.on('data', function(data_) {
data += data_.toString();
});
res.on('end', function() {
parser.parseString(data, function(err, result) {
//console.log('FINISHED', err, result);
//var json = JSON.stringify(result)
//console.log(json)
return callback(result);
});
});
}
});
};
阿维-WX-API.js
var getXml = require('./getXmlToObj');
url = 'https://aviationweather.gov/adds/dataserver_current/httpparam?datasource=metars&requestType=retrieve&format=xml&mostRecentForEachStation=constraint&hoursBeforeNow=1.25&stationString=KFRG'
var x = getXml(url,function(json){
return json;
})
console.log(x)