【问题标题】:How to extract and display only the current temperature in weatherzone?如何仅提取和显示天气区的当前温度?
【发布时间】:2016-07-16 18:08:20
【问题描述】:

通过 C# 代码从 weatherzone 获取数据:

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();

获取当前天气:

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

输出:

<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 />

问题:如何在此输出中获取温度?

【问题讨论】:

  • 你的SyndicationFeed 是什么?能否提供完整的命名空间?
  • 嗨,您可以使用 System.ServiceModel.dll 中的 System.ServiceModel.Syndication 添加

标签: c# xml weather-api


【解决方案1】:

你可以像这样粗暴地做一些事情:

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);

【讨论】:

    【解决方案2】:

    另一种方式

    var temperature = "<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 />";
    

    C#:

        private static string Temperature(string temperature)
        {
            try
            {
                string[] value = Regex.Split(temperature, "\n");
                string[] temp = Regex.Split(value[0], "</b> ");
                return temp[1].Substring(0, 2);
            }
            catch { return string.Empty; }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2019-12-17
      • 2013-02-05
      • 2019-08-08
      • 2018-08-31
      • 2011-10-22
      • 1970-01-01
      相关资源
      最近更新 更多