用vb.net写一个简易的RSS阅读器

先发一个做出来的效果图

哈哈!怎么样?对了DUDU,我这个还解决了看天下那个阅读器不能正常显示相对路径的图片的问题哟!
现在不管相对的还是绝对的路径的图片都能正常显示哈!

下面是源代码,没有太多注释,因为都比较简单嘛!

Imports System.Xml
Imports System.Threading

Public Class Form1Class Form1
    Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写 dispose 以清理组件列表。
    Protected Overloads Overrides Sub Dispose()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()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.ItemHeight = 12
        Me.ListBox1.Location = New System.Drawing.Point(0, 72)
        Me.ListBox1.Name = "ListBox1"
        Me.ListBox1.Size = New System.Drawing.Size(872, 124)
        Me.ListBox1.TabIndex = 0
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(760, 0)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(112, 72)
        Me.Button1.TabIndex = 1
        Me.Button1.Text = "读取"
        '
        'AxWebBrowser1
        '
        Me.AxWebBrowser1.Enabled = True
        Me.AxWebBrowser1.Location = New System.Drawing.Point(0, 208)
        Me.AxWebBrowser1.OcxState = CType(resources.GetObject("AxWebBrowser1.OcxState"), System.Windows.Forms.AxHost.State)
        Me.AxWebBrowser1.Size = New System.Drawing.Size(872, 512)
        Me.AxWebBrowser1.TabIndex = 2
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(24, 32)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(728, 16)
        Me.Label1.TabIndex = 3
        Me.Label1.Text = "网站:"
        '
        'Label2
        '
        Me.Label2.Location = New System.Drawing.Point(24, 48)
        Me.Label2.Name = "Label2"
        Me.Label2.Size = New System.Drawing.Size(728, 16)
        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(664, 21)
        Me.TextBox1.TabIndex = 6
        Me.TextBox1.Text = "http://www.cnblogs.com/aowind/Rss.aspx"
        '
        'StatusBar1
        '
        Me.StatusBar1.Location = New System.Drawing.Point(0, 725)
        Me.StatusBar1.Name = "StatusBar1"
        Me.StatusBar1.Size = New System.Drawing.Size(872, 24)
        Me.StatusBar1.TabIndex = 7
        Me.StatusBar1.Text = "StatusBar1"
        '
        'Label4
        '
        Me.Label4.Location = New System.Drawing.Point(16, 8)
        Me.Label4.Name = "Label4"
        Me.Label4.Size = New System.Drawing.Size(64, 16)
        Me.Label4.TabIndex = 8
        Me.Label4.Text = "RSS地址:"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(872, 749)
        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 = "简易RSS阅读器"
        CType(Me.AxWebBrowser1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region
    Private thread As thread '定义一个线程
    Private Sub loadrss()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()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()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()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()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()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()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()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()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()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()Function formatHtml(ByVal str As String) As String
        Return Replace(str, "src=" & Chr(34) & "/", "src =" & Chr(34) & formatURL(TextBox1.Text))
    End Function
End Class

当然还有好多功能没完成,比如收藏RSS地址、是否已读、自动更新。
所以叫简易RSS阅读器嘛!参考一下!

时间: 2024-09-24 22:14:52

用vb.net写一个简易的RSS阅读器的相关文章

vb.net写一个简易的RSS阅读器

十分简易哈!解决了相对图片路径不能正常显示!可用于博客园全文点击http://www.cnblogs.com/aowind/archive/2005/03/16/119838.html

用VB.NET写的一个简易的RSS阅读器

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() 调用之

用vb.net做一个RSS阅读器续--分类功能(博客园专用)

上次发布了一个简易的RSS阅读器的源代码这次给它加上了分类功能http://www.cnblogs.com/aowind/archive/2005/03/18/120942.html几有三个过程哈!对了,还有上次一位朋友把代码改写成了C#.net的http://www.cnblogs.com/79288440/archive/2005/03/17/120608.html大家也可以看看哟!历害!

[UWP]涨姿势UWP源码——极简的RSS阅读器

原文:[UWP]涨姿势UWP源码--极简的RSS阅读器 涨姿势UWP,一个开源的RSS阅读器,一个纯粹的项目,一个有道德的APP,一个脱离了低级趣味的作者,一些有益于人民的代码.骚年,还等什么,来涨点姿势吧! 该项目代码可能会引起部分人群的不适,敏感人群请在父母陪同下阅读. 看到第三段的骚年们,我想你们是对这个RSS的阅读器感兴趣了,该项目是一个极为简单的UWP的工程,代码托管在GitHub上,供有兴趣学习UWP APP开发的童鞋们参考.工程主要包括以下几个文件: 工程 文件 备注 ZhangZ

Web版RSS阅读器(一)——dom4j读取xml(opml)文件

      接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习一下使用dom4j读取xml文件.       在java程序设计中,尤其是java web开发程序,xml应用频率超高.Spring.Hibernate.Struts等各种web 框架,MyEclipse.Oracle等IDE,也都主要依托xml.可以说xml对于系统的配置,有着至关重

Java实现Web版RSS阅读器(一)dom4j读取xml(opml)文件

接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习一下使用dom4j读取xml文件. 在java程序设计中,尤其是java web开发程序,xml应用频率超高.Spring.Hibernate.Struts等各种web 框架,MyEclipse.Oracle等IDE,也都主要依托xml.可以说xml对于系统的配置,有着至关重要的作用.而这些也同时增

用开源工具创建BlackBerry应用程序,第2部分 构建RSS阅读器

开放源码对软件开发市场产生了革命性影响,如今新的消息渠道不断涌现, 它们正是以这种方式强劲地冲击着传统的消息渠道.今天我们可以从各种 Internet 资源和 Internet 主流媒体获得免费的消息.我们可以通过阅读不同 的 Web 站点来获取消息,但这样做非常繁琐.那么,随时更新感兴趣的消息怎 么样?集中地接收您喜欢的消息不是很方面吗?在 BlackBerry 上,您可以通过 RSS 阅读器来实现这些功能.本教程是系列教程 "用开源工具创建 BlackBerry 应用程序" 的第

谷歌为何关闭Google Reader RSS阅读器?

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   今年 3 月,Google 宣布将在 7 月 1 日正式关闭 Google Reader 服务.消息一出,全网皆惊.很显然,Google 有很充分的理由要关闭 Reader 服务,尽管它声称主要是因为"用户数量下滑",但在这背后, 肯定还有更深层次的原因,否则不会壮士断腕,放弃数千万的用户,并背上一片骂声.     Google 新闻与社交产

续用VB.net做RSS阅读器

继续上次做的RSS阅读器.http://www.cnblogs.com/aowind/archive/2005/03/16/119841.html 这次做成了博客园的专用阅读器了,给左边加上了一个treeview,专门用来显示博客园的分类和博客列表.嘿嘿下面是新版的图片上次的源代码已提供出来了http://www.cnblogs.com/aowind/archive/2005/03/17/120543.html这次就只发一些新增加的内容 首先,要加一个treeview,当然加在哪里自己定了,一般