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