Reading attributes from RSS feed

Posted on 2008-10-06
Last Modified: 2013-11-18
I'm trying to consume this RSS feed below. How do I get the min, max, etc attributes from the w:forecast node using the SyndicationFeed or some other method?

I did plan on using the class provided here to keep the code succinct.

MSDN reference to SyndicationFeed
WebClient client = new WebClient();
client.Proxy = new WebProxy(proxyAddress, true);
Stream strm = client.OpenRead("");
XmlReader reader = XmlReader.Create(strm);
SyndicationFeedFormatter formatter = SyndicationFormatterFactory.CreateFeedFormatter(reader);
SyndicationFeed feed = formatter.Feed;
Collection<string> timeToLive = feed.ElementExtensions.ReadElementExtensions<string>("ttl", "");
double ttl = 30;
if (timeToLive.Count > 0)
    ttl = Double.Parse(timeToLive[0]);

Open in new window

Question by:brene
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 13

Expert Comment

ID: 22657834
are you using .net 3.5?

Author Comment

ID: 22664926
Yes, that is why I want to take advantage of the SyndicationFeed class but I'll use any method that works.
LVL 13

Expert Comment

ID: 22666401

Author Comment

ID: 22666763
That link shows how to create a feed. I'm trying to get the data from an existing feed so that doesn't help.

What I want is the information contained in the w:forecast node eg.
<w:forecast day="Thursday" description="Early Fog Followed by Sun. Mild." min="8" max="21" icon="12" iconUri="" iconAlt="Early Fog Followed by Sun"/>

Accepted Solution

brene earned 0 total points
ID: 22684156
Worked it out myself.
var items = from i in feed.Items
			select new
				Title = i.Title.Text,
				Link = i.Links[0].Uri.ToString(),
				Ext = i.ElementExtensions
foreach (var item in items)
	currWeather.Title = item.Title;
	currWeather.Link = item.Link;
	foreach (SyndicationElementExtension extension in item.Ext)
		if (extension.OuterName == "current")
			XmlReader xReader = extension.GetReader();
			if (xReader.HasAttributes)
				currWeather.Temperature = Double.Parse(xReader["temperature"]);
				currWeather.DewPoint = Double.Parse(xReader["dewPoint"]);
				currWeather.Humidity = Double.Parse(xReader["humidity"]);
				currWeather.WindSpeed = Double.Parse(xReader["windSpeed"]);
				currWeather.WindGusts = Double.Parse(xReader["windGusts"]);
				currWeather.WindDirection = xReader["windDirection"];
				currWeather.Pressure = Double.Parse(xReader["pressure"]);
				currWeather.Rain = Double.Parse(xReader["rain"]);

Open in new window


Featured Post

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Styling your websites can become very complex. Here I'll show how SASS can help you better organize, maintain and reuse your CSS code.
The viewer will learn how to count occurrences of each item in an array.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question