我正在尝试解析Reddit的RSS feed,以获取头版文章的标题,并且遇到了一些麻烦。源代码如下:

//var util = require('util');
//var cheerio = require('cheerio');

var fs = require('fs');
var request = require('request');

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

url = 'http://www.reddit.com/.xml';

request(url, function(error, response, xml){

    parseString(xml, function(err, result) {

        result = result.rss.channel[0];

        console.log(result.item[0]['title']); // works fine, gets first title

        for(var key in result){
            console.log(result[key]['title']); // returns a bunch of 'undefined'
        }

        //console.log(util.inspect(result,false,null));

        fs.writeFile("index.html", result, function(err){
            if(err) { return console.log(err); }
            return console.log("File saved.");
        });
    });
});

最佳答案

之所以得到undefined,是因为您应该遍历result.item而不是仅仅遍历result。例如:

for(var key in result.item) {
  console.log(result.item[key]['title']);
}


另外,您应该只使用常规的for循环而不是使用for..in,因为result.item似乎只是一个普通数组。例如:

var items = result.item;
for (var i = 0; i < items.length; ++i) {
  console.log(items[i].title);
}

10-05 20:31