zoukankan      html  css  js  c++  java
  • 用VB.NET写的一个简易的RSS阅读器


    源代码如下:
    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 NothingThen 
    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(067
    Me.ListBox1.Name 
    = "ListBox1" 
    Me.ListBox1.Size 
    = New System.Drawing.Size(727108
    Me.ListBox1.TabIndex 
    = 0 
    ' 
    '
    Button1 
    '
     
    Me.Button1.Location = New System.Drawing.Point(6295
    Me.Button1.Name 
    = "Button1" 
    Me.Button1.Size 
    = New System.Drawing.Size(9456
    Me.Button1.TabIndex 
    = 1 
    Me.Button1.Text 
    = "读取" 
    ' 
    '
    AxWebBrowser1 
    '
     
    Me.AxWebBrowser1.Enabled = True 
    Me.AxWebBrowser1.Location 
    = New System.Drawing.Point(-7184
    Me.AxWebBrowser1.OcxState 
    = CType(resources.GetObject("AxWebBrowser1.OcxState"), System.Windows.Forms.AxHost.State) 
    Me.AxWebBrowser1.Size 
    = New System.Drawing.Size(727480
    Me.AxWebBrowser1.TabIndex 
    = 2 
    ' 
    '
    Label1 
    '
     
    Me.Label1.Location = New System.Drawing.Point(026
    Me.Label1.Name 
    = "Label1" 
    Me.Label1.Size 
    = New System.Drawing.Size(62415
    Me.Label1.TabIndex 
    = 3 
    Me.Label1.Text 
    = "网站地址:" 
    ' 
    '
    Label2 
    '
     
    Me.Label2.Location = New System.Drawing.Point(045
    Me.Label2.Name 
    = "Label2" 
    Me.Label2.Size 
    = New System.Drawing.Size(62414
    Me.Label2.TabIndex 
    = 4 
    Me.Label2.Text 
    = "网站描述:" 
    ' 
    '
    TextBox1 
    '
     
    Me.TextBox1.Location = New System.Drawing.Point(720
    Me.TextBox1.Name 
    = "TextBox1" 
    Me.TextBox1.Size 
    = New System.Drawing.Size(55220
    Me.TextBox1.TabIndex 
    = 6 
    Me.TextBox1.Text 
    = "Http://Blog.CSDN.Net/AppleBBS/Rss.aspx" 
    ' 
    '
    StatusBar1 
    '
     
    Me.StatusBar1.Location = New System.Drawing.Point(0495
    Me.StatusBar1.Name 
    = "StatusBar1" 
    Me.StatusBar1.Size 
    = New System.Drawing.Size(72622
    Me.StatusBar1.TabIndex 
    = 7 
    Me.StatusBar1.Text 
    = "StatusBar1" 
    ' 
    '
    Label4 
    '
     
    Me.Label4.Location = New System.Drawing.Point(06
    Me.Label4.Name 
    = "Label4" 
    Me.Label4.Size 
    = New System.Drawing.Size(7212
    Me.Label4.TabIndex 
    = 8 
    Me.Label4.Text 
    = "RSS地址:" 
    Me.Label4.TextAlign 
    = System.Drawing.ContentAlignment.MiddleLeft 
    ' 
    '
    Form1 
    '
     
    Me.AutoScaleBaseSize = New System.Drawing.Size(513
    Me.ClientSize 
    = New System.Drawing.Size(726517
    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.ObjectByVal 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.ObjectByVal 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.ObjectByVal 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 leftmargin='5' topmargin='0' rightmargin='0'>" 
    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 & "'>" 
    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 & "<br><b>日期:</b>" 
    content 
    = content & Trim(mynodelist(i).Item("pubDate").InnerText()) 
    content 
    = content & "</td></tr></table><table><tr><td><b>摘要:</b>" 
    content 
    = content & formatHtml(mynodelist(i).Item("description").InnerText()) 
    content 
    = content & "</td></tr></table></body></html>" 
    = 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 StringByVal FileContent As StringAs 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 StringAs 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 
    += 1 
    End If 
    If j = 3 Then Exit For 
    Next 
    Return sStr 
    End Function
     
    '将内容里的相对图片地址改成绝对地址的函数 
    Private Function formatHtml(ByVal str As StringAs String 
    Return Replace(str"src=" & Chr(34& "/""src =" & Chr(34& formatURL(TextBox1.Text)) 
    End Function
     

    Private Sub TextBox1_Enter(ByVal sender As ObjectByVal e As System.EventArgs) Handles TextBox1.Enter 
    Try 
    thread 
    = New Thread(AddressOf loadrss) 
    thread.Start() 
    Catch ex As Exception 
    MsgBox(ex.ToString) 
    End Try 
    End Sub
     
    End Class

    转自: http://www.cnblogs.com/aowind/archive/2005/03/16/119838.html
  • 相关阅读:
    最小生成树
    线段树
    编程快捷键
    线段树的动态开点
    常用库
    线性求逆元
    文件读入
    树上倍增(LCA)
    set容器
    快读与快写
  • 原文地址:https://www.cnblogs.com/Dicky/p/122365.html
Copyright © 2011-2022 走看看