如何使用Node.JS从URL访问单个XML值

时间:2017-01-31 12:20:15

标签: javascript node.js xml parsing url

我对Node.js和编程非常陌生。我的问题是,我正在尝试从URL的XML中访问一个或多个值,而不是URL的XML中的每个值。

而不是仅使用下面的代码并接收每个值:

console.log(JSON.stringify(data, null, 2));

Retrieving every value

我尝试使用这行代码:

console.log(JSON.stringify(data, ['Destination', 'Origintime']));

但它空洞了。

这是我正在使用的代码。

var parseString = require('xml2js').parseString;
var http = require('http');
var url = "http://api.irishrail.ie/realtime/realtime.asmx/getStationDataByNameXML?StationDesc=Malahide"

var info = '';

function xmlToJson(url, callback) {
  var req = http.get(url, function(res) {
    var xml = '';

    res.on('data', function(chunk) {
      xml += chunk;
    });

    res.on('error', function(e) {
      callback(e, null);
    }); 

    res.on('timeout', function(e) {
      callback(e, null);
    }); 

    res.on('end', function() {
      parseString(xml, function(err, result) {
        callback(null, result);
      });
    });
  });
}

xmlToJson(url, function(err, data) {
    if(err) {
        // Handle this however you like
        return console.err(err);
        res.send('Error')
    }

    //This way below works, however pulls in every value from xml url.
    info = '' + JSON.stringify(data, null, 2) + ''
    console.log(JSON.stringify(data, null, 2));

    //This way provides no values from url xml.
    //console.log(JSON.stringify(data, ['Direction', 'Destination', 'Exparrival']));
    //info = '' + JSON.stringify(data, ['Direction', 'Destination', 'Exparrival']) + ''
});

希望你们能帮忙,谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个

JSON.stringify(data.map(function (i) {
    return {
        'Direction' : i['Direction'],
        'Destination' : i['Destination'],
        'Exparrival' : i['Exparrival']
    }
}))