
源代码如下: Imports System.Xml Imports System.Threading
Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 "
Public Sub New() MyBase.New()
'该调用是 Windows 窗体设计器所必需的。 InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
'窗体重写 dispose 以清理组件列表。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub
'Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的 '可以使用 Windows 窗体设计器修改此过程。 '不要使用代码编辑器修改它。 Friend WithEvents ListBox1 As System.Windows.Forms.ListBox Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents AxWebBrowser1 As AxSHDocVw.AxWebBrowser Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents TextBox1 As System.Windows.Forms.TextBox Friend WithEvents StatusBar1 As System.Windows.Forms.StatusBar Friend WithEvents Label4 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1)) Me.ListBox1 = New System.Windows.Forms.ListBox Me.Button1 = New System.Windows.Forms.Button Me.AxWebBrowser1 = New AxSHDocVw.AxWebBrowser Me.Label1 = New System.Windows.Forms.Label Me.Label2 = New System.Windows.Forms.Label Me.TextBox1 = New System.Windows.Forms.TextBox Me.StatusBar1 = New System.Windows.Forms.StatusBar Me.Label4 = New System.Windows.Forms.Label CType(Me.AxWebBrowser1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'ListBox1 ' Me.ListBox1.Location = New System.Drawing.Point(0, 67) Me.ListBox1.Name = "ListBox1" Me.ListBox1.Size = New System.Drawing.Size(727, 108) Me.ListBox1.TabIndex = 0 ' 'Button1 ' Me.Button1.Location = New System.Drawing.Point(633, 5) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(94, 56) Me.Button1.TabIndex = 1 Me.Button1.Text = "读取" ' 'AxWebBrowser1 ' Me.AxWebBrowser1.Enabled = True Me.AxWebBrowser1.Location = New System.Drawing.Point(0, 193) Me.AxWebBrowser1.OcxState = CType(resources.GetObject("AxWebBrowser1.OcxState"), System.Windows.Forms.AxHost.State) Me.AxWebBrowser1.Size = New System.Drawing.Size(727, 476) Me.AxWebBrowser1.TabIndex = 2 ' 'Label1 ' Me.Label1.Location = New System.Drawing.Point(8, 26) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(616, 15) Me.Label1.TabIndex = 3 Me.Label1.Text = "网站地址:" ' 'Label2 ' Me.Label2.Location = New System.Drawing.Point(8, 45) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(616, 14) Me.Label2.TabIndex = 4 Me.Label2.Text = "网站描述:" ' 'TextBox1 ' Me.TextBox1.Location = New System.Drawing.Point(88, 0) Me.TextBox1.Name = "TextBox1" Me.TextBox1.Size = New System.Drawing.Size(536, 20) Me.TextBox1.TabIndex = 6 Me.TextBox1.Text = "Http://Blog.CSDN.Net/AppleBBS/Rss.aspx" ' 'StatusBar1 ' Me.StatusBar1.Location = New System.Drawing.Point(0, 495) Me.StatusBar1.Name = "StatusBar1" Me.StatusBar1.Size = New System.Drawing.Size(726, 22) Me.StatusBar1.TabIndex = 7 Me.StatusBar1.Text = "StatusBar1" ' 'Label4 ' Me.Label4.Location = New System.Drawing.Point(9, 6) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(70, 12) Me.Label4.TabIndex = 8 Me.Label4.Text = "RSS地址:" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(726, 517) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.StatusBar1) Me.Controls.Add(Me.TextBox1) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.AxWebBrowser1) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.ListBox1) Me.Name = "Form1" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "Easy RSS Reader" CType(Me.AxWebBrowser1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False)
End Sub
#End Region Private thread As Thread '定义一个线程 Private Sub loadrss() '读取RSS文件并取出内容标题的过程 StatusBar1.Text = "正在读取" & TextBox1.Text & "并效验" Me.loadxmltocache(TextBox1.Text) StatusBar1.Text = "正在读取相关网站信息" Me.loadtitle() StatusBar1.Text = "正在读取相RSS内容项" Me.loaditem() StatusBar1.Text = "完成" End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try thread = New Thread(AddressOf loadrss) thread.Start() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AxWebBrowser1.Width = Me.Width StatusBar1.Text = "就绪" End Sub Private Sub loadxmltocache(ByVal URL As String) '读取RSS文件并存放在本地以供操作 Dim xmldocument As New XmlDocument xmldocument.Load(URL) xmldocument.Save(Application.StartupPath & "~doc.xml")
End Sub Private Sub loadtitle() '从本地文件中进行操作,读取RSS中有关网站的信息 Dim xmlDocument As New XmlDocument xmlDocument.Load(Application.StartupPath & "~doc.xml") Dim mynodelist As XmlNodeList mynodelist = xmlDocument.SelectNodes("/rss/channel") Label1.Text = "网站:" & Trim(mynodelist(0).Item("title").InnerText()) Label2.Text = "描述:" & Trim(mynodelist(0).Item("description").InnerText()) End Sub Private Sub loaditem() '从本地文件中进行操作,读取RSS中内容的标题及作者 Dim xmlDocument As New XmlDocument xmlDocument.Load(Application.StartupPath & "~doc.xml") Dim mynodelist As XmlNodeList mynodelist = xmlDocument.SelectNodes("/rss/channel/item") ListBox1.Items.Clear() Dim i As Integer For i = 0 To mynodelist.Count - 1 ListBox1.Items.Add("[" & Trim(mynodelist(i).Item("dc:creator").InnerText()) & "]" & Trim(mynodelist(i).Item("title").InnerText())) Next End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged thread = New Thread(AddressOf loadhtml) thread.Start() End Sub Private Sub loadhtml() '读取RSS中对应文件的内容并存到临时文件后显示 Dim xmlDocument As New XmlDocument xmlDocument.Load(Application.StartupPath & "~doc.xml") Dim mynodelist As XmlNodeList mynodelist = xmlDocument.SelectNodes("/rss/channel/item") Dim i As Integer Dim j As Boolean Dim content As String StatusBar1.Text = "正在读取文章内容" For i = 0 To mynodelist.Count - 1 If ListBox1.SelectedItem = "[" & Trim(mynodelist(i).Item("dc:creator").InnerText()) & "]" & Trim(mynodelist(i).Item("title").InnerText()) Then content = content & "<html><head><meta http-equiv='content-type' content='text/html;charset=UTF-8'></head><body>" content = content & "<table width='100%' height='80' bgcolor='#eeeeee'><tr><td><b>标题:</b><a href='" content = content & Trim(mynodelist(i).Item("link").InnerText()) content = content & "' target='_blank'>" content = content & Trim(mynodelist(i).Item("title").InnerText()) content = content & "</a><br><b>作者:</b>" content = content & Trim(mynodelist(i).Item("dc:creator").InnerText()) content = content & "</tb></tr></table>" content = content & formatHtml(mynodelist(i).Item("description").InnerText()) content = content & "</body></html>" j = SaveTextFile(Application.StartupPath & "~temp.html", content) AxWebBrowser1.Navigate(Application.StartupPath & "~temp.html") Exit For End If Next StatusBar1.Text = "完成" End Sub '写文件的过程 Function SaveTextFile(ByVal FilePath As String, ByVal FileContent As String) As Boolean Dim sw As System.IO.StreamWriter Try sw = New System.IO.StreamWriter(FilePath, False) sw.Write(FileContent) Return True Catch e As Exception Return False Finally If Not sw Is Nothing Then sw.Close() End Try End Function '从地址里取网址的函数 Private Function formatURL(ByVal str As String) As String Dim sStr As String Dim i As Integer Dim j As Integer For i = 1 To Len(str) sStr = sStr & Mid(str, i, 1) If Mid(str, i, 1) = "/" Then j += 1 End If If j = 3 Then Exit For Next Return sStr End Function '将内容里的相对图片地址改成绝对地址的函数 Private Function formatHtml(ByVal str As String) As String Return Replace(str, "src=" & Chr(34) & "/", "src =" & Chr(34) & formatURL(TextBox1.Text)) End Function End Class
转自: http://www.cnblogs.com/aowind/archive/2005/03/16/119838.html 
|