Reading attributes from RSS feed

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?

http://rss.weather.com.au/sa/parafield

I did plan on using the class provided here to keep the code succinct.
http://www.clariusconsulting.net/blogs/kzu/archive/2007/11/22/ForgetaboutwritingAtomorRSSXMLhandlingcodeeveragain.aspx

MSDN reference to SyndicationFeed
http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx
WebClient client = new WebClient();
client.Proxy = new WebProxy(proxyAddress, true);
 
Stream strm = client.OpenRead("http://rss.weather.com.au/sa/parafield");
XmlReader reader = XmlReader.Create(strm);
 
SyndicationFeedFormatter formatter = SyndicationFormatterFactory.CreateFeedFormatter(reader);
formatter.ReadFrom(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

LVL 4
breneAsked:
Who is Participating?
 
breneConnect With a Mentor Author Commented:
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

0
 
SameerJagdaleCommented:
are you using .net 3.5?
0
 
breneAuthor Commented:
Yes, that is why I want to take advantage of the SyndicationFeed class but I'll use any method that works.
0
 
breneAuthor Commented:
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="http://www.weather.com.au/images/icons/12.gif" iconAlt="Early Fog Followed by Sun"/>
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.