Search code examples
c#xmlweather-api

How to extract and display only the current temperature in weatherzone?


Fetching the data from weatherzone by C# code :

string url = "http://rss.weatherzone.com.au/?u=12994-1285&lt=twcid&lc=160255&obs=1&fc=1";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();

Get current weather :

var temperature = feed.Items.ToList()[0].Summary.Text.Trim();

Output :

<b>Temperature:</b> 33.0&#176;C
<img align="top" src="http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif" alt="steady"/>
<br />
<b>Feels like:</b> 38.0&#176;C<br />
<b>Dew point:</b> 23.0&#176;C
<img align="top" src="http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif" alt="steady"/>
<br />
<b>Relative humidity:</b> 56%<br />
<b>Wind:</b> NE at 18 km/h, gusting to  km/h
<img align="top" src="http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif" alt="steady"/>
<br />
<b>Rain:</b> mm since 9am<br />
<b>Pressure:</b> 1013.0 hPa
<img align="top" src="http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif" alt="steady"/>
<br />

Question : How I can get Temperature in this output ?


Solution

  • You can do something crude like this:

    var stringTemp = "<b>Temperature:</b> 33.0&#176;C <img align=\"top\" src=\"http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif\" alt=\"steady\"/> <br /> <b>Feels like:</b> 38.0&#176;C<br /> <b>Dew point:</b> 23.0&#176;C <img align=\"top\" src=\"http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif\" alt=\"steady\"/> <br /> <b>Relative humidity:</b> 56%<br /> <b>Wind:</b> NE at 18 km/h, gusting to km/h <img align=\"top\" src=\"http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif\" alt=\"steady\"/> <br /> <b>Rain:</b> mm since 9am<br /> <b>Pressure:</b> 1013.0 hPa <img align=\"top\" src=\"http://www.weatherzone.com.au/images/widgets/nav_trend_steady.gif\" alt=\"steady\"/> <br />";
    var start = stringTemp.IndexOf("</b>");
    var end = stringTemp.IndexOf("<img");
    var temp = stringTemp.Substring(start + "</b>".Length, end - start - "<img".Length);