2016-07-25 15 views
0

Seit einiger Zeit benutze ich die Yahoo Weather API, um die aktuelle Tagestemperatur und Prognosen für Statistiken in einer .Net-Anwendung in C# zu erhalten. Offenbar Yahoo aktualisiert ihre API und die Anwendung kann die Daten nicht erhalten.Wie upgrade ich auf die neue Yahoo Wetter API?

ich ein XML-Dokument wie folgt verwende die Daten

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

und Mag ich die xml bekommen zu bekommen Knoten und Werte sie in der Datenbank zu speichern.

Welche Änderungen muss ich vornehmen, damit die Anwendung mit der neuen API funktioniert?

Antwort

0

Zunächst einmal müssen wir die URL ändern, die wir von

doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c"); 

zu

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

dann müssen wir den Knoten Pfad ändern, weil das neue XML-Dokument für die Prognose fragen ist etwas anders als das alte.

Wechsel von

XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns); 

zu

XmlNode nod = doc.SelectSingleNode("/query/results/channel/link", ns); 

und alles sollte funktionieren gut.