Ejemplo n.º 1
0
        static void WeatherTest()
        {
            XmlWeatherManager mgr = new XmlWeatherManager();
            WeartherData data=new WeartherData();
               string filename= mgr.GetXmlFileNameByLocation("T74", "E", 12000);
              WeartherData data1= mgr.getWeather(filename);

            //mgr.GetWeatherData("http://10.21.50.100/36_06.xml",data);
            if(data1.IsValid)
            Console.WriteLine(data1);
        }
Ejemplo n.º 2
0
        void ReadXmlWeatherData(string url, WeartherData wdata )
        {
            System.Net.WebClient client = new System.Net.WebClient();

             // System.IO.Stream stream= client.OpenRead(url);
              System.Xml.XmlReader rd = System.Xml.XmlReader.Create(url);
              int cdcnt = 0;
              bool found = false;
              while (rd.Read())
              {

              if (rd.NodeType == System.Xml.XmlNodeType.CDATA && rd.Depth == 4)
              {
                  cdcnt++;

                  if (cdcnt == 5)  //get district title
                  {
                     string str= rd.Value.Trim();
                     int pos=  str.IndexOf(' ',0);
                     wdata.district=str.Substring(0,pos-1)+" " ; //去掉縣市 家空白
                  }
                  if (cdcnt == 6)  // get weather array
                  {
                      string str = rd.Value.Replace('\n',' ').Replace('\t',' ').Trim();
                      string[] weatherstrs = str.Split(new string[] { "<BR>" } , StringSplitOptions.RemoveEmptyEntries);

                      foreach (string wstr in weatherstrs)
                      {
                         // Console.WriteLine(wstr.Trim());
                          string[] items = wstr.Trim().Split(new char[] { ' ' });
                          string strdate = items[0];
                          string dayOrnight = items[1];
                          int lowtemp = System.Convert.ToInt32(items[2].Split(new char[] { ':' })[1]);
                          int highttemp = System.Convert.ToInt32(items[4]);
                          string desc = items[5];
                          if (strdate == string.Format("{0:00}/{1:00}", DateTime.Now.Month, DateTime.Now.Day))
                          {

                              if (dayOrnight == "白天")
                              {
                                  wdata.day_low_temp = lowtemp;
                                  wdata.day_high_temp = highttemp;
                                  wdata.day_weatrher_description = desc;
                              }
                              else if (dayOrnight == "晚上")
                              {
                                  wdata.night_low_temp = lowtemp;
                                  wdata.night_high_temp = highttemp;
                                  wdata.night_weatrher_description = desc;
                              }
                              else
                                  throw new Exception("中央氣象局資料剖析錯誤");
                              found = true;
                          }

                      }

                  }
                  //if(cdcnt==5 || cdcnt==6)
                  //Console.WriteLine(rd.Name + "_" + rd.NodeType + "_" + rd.Depth + rd.Value);
              }
              }

              rd.Close();
              client.Dispose();
              if (found)
              wdata.IsValid = true;
              else
              wdata.IsValid = false;
        }