Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 43
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Wunderground Wettervorhersage


Autor: Matthias Kahlert
Sprache: C#
Bewertung: 9
(1 Bewertung)
Anzahl der Aufrufe: 3762
  
Kick it on dotnet-kicks.de  

Beschreibung:

Diese Klasse ruft per XML Schnittstelle von Wunderground die Wettervorhersage für einen beliebigen Ort ab.

Aufruf: List GetForecast("Regensburg,Germany");

Die Ortsangabe kann direkt unter www.wunderground.com geprüft werden, Angabe am Besten immer inkl. Land (auf Englisch).

Eine vollständige Beschreibung der API gibt es hier:
http://wiki.wunderground.com/index.php/API_-_XML#ForecastXML


Abgelegt unter: Wettervorhersage, Forecast, Wetter, Wetterbericht, Wunderground, WeatherUnderground, XML.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Xml;

namespace MaxPro.Common.Wetter
{
    //========================================================================================================================
    /// <summary>
    /// Schnittstelle zum Weather Underground, wunderground.com
    /// </summary>
    public static class Wunderground
    {
        //------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Struktur für die Ergebnis-Daten
        /// </summary>
        public struct WundergroundForecastData
        {
            /// <summary>
            /// Tagesdatum
            /// </summary>
            public DateTime Datum;
            /// <summary>
            /// Wetter-Vorhersage
            /// </summary>
            public string Condition;
            /// <summary>
            /// Bezeichnung für das dazustellende Icon
            /// </summary>
            public string Icon;
            /// <summary>
            /// Tiefste Temperatur
            /// </summary>
            public int TemperatureLow;
            /// <summary>
            /// Höchste Temperatur
            /// </summary>
            public int TemperatureHigh;
        }

        //------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Wettervorhersage für einen Ort herunterladen
        /// </summary>
        /// <param name="ort"></param>
        /// <returns></returns>
        public static IEnumerable<WundergroundForecastData> GetForecast(string ort)
        {
            // Ergebnis
            List<WundergroundForecastData> ergebnis = new List<WundergroundForecastData>();

            // Erstmal einen Webclient holen
            WebClient web = new WebClient();

            // XML Service von Wunderground
            string url = "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=" + ort;
            string xmlWunderground;
            try
            {
                using (StreamReader sr = new StreamReader(web.OpenRead(url)))
                {
                    xmlWunderground = sr.ReadToEnd();
                    sr.Close();
                }
            }
            catch (Exception)
            {
                return null;
            }

            // XML auslesen
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlWunderground);
            XmlElement root = doc.DocumentElement;
            if (root != null)
            {
                XmlNode simpleForecast = root["simpleforecast"];
                if (simpleForecast != null)
                {
                    // Alle Elemente der Auflistung durcharbeiten
                    foreach (XmlNode forecastDay in simpleForecast)
                    {
                        // Ist es wirklich ein Forecast?
                        if (forecastDay.Name == "forecastday")
                        {
                            // Ergebnis einfügen
                            WundergroundForecastData wfd = new WundergroundForecastData();

                            // Datum aus der Datei lesen
                            XmlNode dateNode = forecastDay["date"];
                            if (dateNode != null)
                                wfd.Datum = new DateTime(dateNode["year"].GetInnerTextInt(), dateNode["month"].GetInnerTextInt(), dateNode["day"].GetInnerTextInt());

                            // Temperatur
                            XmlNode lowTemp = forecastDay["low"];
                            if (lowTemp != null)
                                wfd.TemperatureLow = lowTemp["celsius"].GetInnerTextInt();
                            XmlNode highTemp = forecastDay["low"];
                            if (highTemp != null)
                                wfd.TemperatureHigh = highTemp["celsius"].GetInnerTextInt();

                            // Condition
                            wfd.Condition = forecastDay["conditions"].GetInnerText();
                            wfd.Icon = forecastDay["icon"].GetInnerText();

                            // Ergebnis speichern
                            ergebnis.Add(wfd);
                        }
                    }
                }
            }

            // Ergebnis
            return ergebnis;
        }

        //------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// InnerText eines XmlElement als String zurückgeben
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private static string GetInnerText(this XmlElement node)
        {
            if (node != null)
                return node.InnerText;
            return "";
        }

        //------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// InnerText eines XmlElement als Integer zurückgeben
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private static int GetInnerTextInt(this XmlElement node)
        {
            try
            {
                if (node != null)
                    return Convert.ToInt32(node.InnerText);
            }
            catch (Exception) { }
            return 0;
        }
    }
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Objekt in XML speichern (Serialisieren)
[C#] Treeview in XML schreiben
[ASP.net] XML - HTML Transformation
[C#] XML Encoding eines XmlDocument ändern
[C#] XMLDocument in XDocument konvertieren
[C#] Rss Feed in XMLDocument laden
[VB.NET] XML Datei in DataSet einlesen
[VB.NET] Objekt mit dem XmlSerializer serialisieren
[VB.NET] XML Datei mit dem XmlSerializer deserialisieren
[C#] Image zu Base64 konvertieren und zurück
[C#] Generische XML-Serialisierung
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] Währungskurse in Datenbank speichern
[VB.NET] Einfaches Erstellen einer XML Datei in .Net
[C#] XML in DataTable laden
[C#] Intellisense Unterstützung für XML Dateien für LINQ
[C#] user.config und generische Listen
[C#] Dataset verschlüsseln
[C#] Xml Datei entschlüsseln
[ASP.net] XML Daten über einen Internet Proxy abfragen
[C#] XML-Programmkonfiguration / -Steuerung
[C#] Formatieren von Sonderzeichen für XML
[C#] Binärdatei in XML File speichern
[C#] Binärdatei aus XML Datei auslesen und abspeichern
[C#] leere Knoten aus XML Document entfernen
[C#] XML Kommentare entfernen
[C#] Austauch von kritischen Zeichen in einem String...
[C#] Excel-Export ohne Excel (auch für Web)
[C#] Ini-Datei-Klasse
[C#] TreeView Export To Xml OR Import from XMl
[C#] Autom. Laden & Speichern von Position und Größe eines Forms
[VB.NET] Bild als XML Datei Speichern
[C#] Ein Object serialisieren
[C#] Ein Object deserialisieren
[C#] Konvertiert Code nach Example für XML-Kommentar
[C#] XMLIO - einfachstes (De)serialisieren von/zu XML-Dateien
[C#] Generisch XML De-/ Serialisieren
[C#] XML generieren mit Linq to XML
[C#] 3 arten der Serialisierung bzw Deserialisierung
[C#] Spracherkennung
[C#] Mit LINQtoXML XML Dateien erzeugen bzw. abfragen
[C#] ini Datei anlegen - mit Dictionary
[C#] Typen mit dem XmlSerializer (de-)serialisieren

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.