如何升级到新的雅虎天气 API?
How to Upgrade to the new Yahoo weather API?
一段时间以来,我一直在使用 Yahoo Weather Api 在 C# 的 .Net 应用程序中获取当日温度和统计数据预报。
显然雅虎更新了他们的 api 并且应用程序无法获取数据。
我正在使用这样的 xml 文档来获取数据
XmlDocument doc = new XmlDocument();
doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");
XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);
link = nod.InnerText;
....more nodes selected....
像这样我得到 xml 个节点和值来将它们存储在数据库中。
我必须进行哪些更改才能使应用程序与新的 api 一起使用?
首先,我们需要更改 url,我们要求的预测来自
doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");
至
query="select%20*%20from%20weather.forecast%20where%20woeid%20%3D%20"+ WOEID
+ "%20and%20u=%27c%27";
doc.Load("https://query.yahooapis.com/v1/public/yql?q="+query+"&format=xml
&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys");
然后我们需要更改节点路径,因为新 xml 文档与旧文档略有不同。
变化自
XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);
至
XmlNode nod = doc.SelectSingleNode("/query/results/channel/link", ns);
一切正常。
一段时间以来,我一直在使用 Yahoo Weather Api 在 C# 的 .Net 应用程序中获取当日温度和统计数据预报。 显然雅虎更新了他们的 api 并且应用程序无法获取数据。
我正在使用这样的 xml 文档来获取数据
XmlDocument doc = new XmlDocument();
doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");
XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);
link = nod.InnerText;
....more nodes selected....
像这样我得到 xml 个节点和值来将它们存储在数据库中。
我必须进行哪些更改才能使应用程序与新的 api 一起使用?
首先,我们需要更改 url,我们要求的预测来自
doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");
至
query="select%20*%20from%20weather.forecast%20where%20woeid%20%3D%20"+ WOEID
+ "%20and%20u=%27c%27";
doc.Load("https://query.yahooapis.com/v1/public/yql?q="+query+"&format=xml
&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys");
然后我们需要更改节点路径,因为新 xml 文档与旧文档略有不同。
变化自
XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);
至
XmlNode nod = doc.SelectSingleNode("/query/results/channel/link", ns);
一切正常。