0

I'm trying to parse Reddit's RSS feed to grab the titles of front page articles, and having some trouble. Source code below:

//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.");
        });
    });
});

1 Answer 1

2

You get undefined because you should be iterating over result.item instead of just result. For example:

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

Additionally, you should just use a regular for-loop instead of using for..in, since it seems like result.item is just a plain array. For example:

var items = result.item;
for (var i = 0; i < items.length; ++i) {
  console.log(items[i].title);
}
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks, this works great. Can you pls elaborate on your last comment - how would the simple for loop look?
I've added an example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.