利用AJAX的UpdatePanel與Timer控制項結合MSN Weather的RSS來達到即時氣象資訊更新的動作
這個範例主要是透過ASP.Net AJAX的非同步傳輸技術,結合MSN Weather的RSS xml 取得氣象資訊
來達到即時更新氣象的一個小範例,並且可以查詢不同台灣不同地區的氣象資訊
ps.程式部分是參考藍色小舖的阿達猴大大的原始碼
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20070724164013E8D
VB.net範例
.aspx
01 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="RSS_VB.aspx.vb" Inherits="RSS_VB" %>
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>未命名頁面</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:ScriptManager ID="ScriptManager1" runat="server">
12 </asp:ScriptManager>
13 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
14 <ContentTemplate>
15 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
16 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:TWXX0021&weadegreetype =C">台北</asp:ListItem>
17 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:32433&weadegreetype=C">台南</asp:ListItem>
18 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:16133&weadegreetype=C">高雄</asp:ListItem>
19 </asp:DropDownList>
20 <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
21 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
22 </ContentTemplate>
23 <Triggers>
24 <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
25 </Triggers>
26 </asp:UpdatePanel>
27 <asp:Timer ID="Timer1" runat="server">
28 </asp:Timer>
29 </div>
30 </form>
31 </body>
32 </html>
33
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>未命名頁面</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:ScriptManager ID="ScriptManager1" runat="server">
12 </asp:ScriptManager>
13 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
14 <ContentTemplate>
15 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
16 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:TWXX0021&weadegreetype =C">台北</asp:ListItem>
17 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:32433&weadegreetype=C">台南</asp:ListItem>
18 <asp:ListItem Value="http://weather.msn.com/RSS.aspx?wealocations=wc:16133&weadegreetype=C">高雄</asp:ListItem>
19 </asp:DropDownList>
20 <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
21 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
22 </ContentTemplate>
23 <Triggers>
24 <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
25 </Triggers>
26 </asp:UpdatePanel>
27 <asp:Timer ID="Timer1" runat="server">
28 </asp:Timer>
29 </div>
30 </form>
31 </body>
32 </html>
33
.vb
01 
Imports System.DataImports System.TextPartial Class RSS_VB Inherits System.Web.UI.Page
02
03
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
04
If Not IsPostBack Then
05
Me.Label1.Text = readRSS()
06
Me.Label2.Text = Now.ToString("yyyy/MM/dd-hh:mm")
07
End If
08
End Sub
09
10
Function readRSS()
11
Dim myDataset As New DataSet
12
myDataset.ReadXml(Me.DropDownList1.SelectedValue)
13
Dim tempString As String
14
tempString = myDataset.Tables(3).Rows(1).Item("description")
15
Dim myDay1, myDay2, myDay3 As String
16
tempString = tempString.Replace("<p>", "")
17
tempString = tempString.Replace("</p>", "")
18
myDay1 = tempString.Substring(0, tempString.IndexOf("<br />"))
19
tempString = tempString.Remove(0, tempString.IndexOf("<br />") + 6)
20
myDay2 = tempString.Substring(0, tempString.IndexOf("<br />"))
21
tempString = tempString.Remove(0, tempString.IndexOf("<br />") + 6)
22
myDay3 = tempString.Substring(0, tempString.IndexOf("<br />"))
23
Dim sb As New StringBuilder
24
sb.Append("今天:" & myWeather(myDay1) & "<BR>")
25
sb.Append("明天:" & myWeather(myDay2) & "<BR>")
26
sb.Append("後天:" & myWeather(myDay3))
27
Return sb.ToString()
28
End Function
29
30
Function myWeather(ByVal tempString As String)
31
Dim Weather As String
32
Dim myString As String
33
myString = tempString
34
myString = myString.Remove(0, myString.IndexOf("<img"))
35
myString = myString.Substring(0, myString.IndexOf(">") + 1)
36
Weather = myString
37
myString = tempString
38
myString = myString.Remove(0, myString.IndexOf("Lo:"))
39
myString = myString.Substring(0, myString.IndexOf("."))
40
myString = myString.Replace("Lo", "最低")
41
Weather = Weather & myString
42
myString = tempString
43
myString = myString.Remove(0, myString.IndexOf("Hi:"))
44
myString = myString.Substring(0, myString.IndexOf("."))
45
myString = myString.Replace("Hi", "最高")
46
Weather = Weather & "," & myString
47
Return Weather
48
End Function
49
50
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
51
Me.Label1.Text = readRSS()
52
Me.Label2.Text = Now.ToString("yyyy/MM/dd-hh:mm")
53
End Sub
54
55
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
56
Me.Label1.Text = readRSS()
57
Me.Label2.Text = Now.ToString("yyyy/MM/dd-hh:mm")
58
End Sub
59
End Class
60
61


02

03

04

05

06

07

08

09

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