续用VB.net做RSS阅读器

简介: 继续上次做的RSS阅读器。http://www.cnblogs.com/aowind/archive/2005/03/16/119841.html这次做成了博客园的专用阅读器了,给左边加上了一个treeview,专门用来显示博客园的分类和博客列表。
继续上次做的RSS阅读器。
http://www.cnblogs.com/aowind/archive/2005/03/16/119841.html

这次做成了博客园的专用阅读器了,给左边加上了一个treeview,专门用来显示博客园的分类和博客列表。嘿嘿
下面是新版的图片
tree.JPG
上次的源代码已提供出来了
http://www.cnblogs.com/aowind/archive/2005/03/17/120543.html
这次就只发一些新增加的内容

首先,要加一个treeview,当然加在哪里自己定了,一般习惯就加在我上图这里了
先给它定义一个根和两个子节点,名字分别是:博客园,博客园分类,博客园列表

下面先来写读博客园分类的过程
img_a6339ee3e57d1d52bc7d02b338e15a60.gif ' 读取博客园分类
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
     Private   Sub loadport() Sub loadport()
img_33d02437d135341f0800e3d415312ae8.gif        
Dim i As Integer
img_33d02437d135341f0800e3d415312ae8.gif        
Dim xmlPort As New XmlDocument
img_33d02437d135341f0800e3d415312ae8.gif        StatusBar1.Text 
= "正在读取博客园分类信息img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif"
img_33d02437d135341f0800e3d415312ae8.gif
        xmlPort.Load("http://www.cnblogs.com/CatalogOpml.aspx")
img_33d02437d135341f0800e3d415312ae8.gif        xmlPort.Save(Application.StartupPath 
& "~port.xml")
img_33d02437d135341f0800e3d415312ae8.gif        
Dim Portnodelist As XmlNodeList
img_33d02437d135341f0800e3d415312ae8.gif        Portnodelist 
= xmlPort.SelectNodes("/opml/body/outline/outline")
img_33d02437d135341f0800e3d415312ae8.gif        
For i = 0 To Portnodelist.Count - 1
img_33d02437d135341f0800e3d415312ae8.gif            TreeView1.Nodes.Item(
0).Nodes.Item(0).Nodes.Add(Portnodelist(i).Attributes.ItemOf("title").InnerText())
img_33d02437d135341f0800e3d415312ae8.gif        
Next
img_33d02437d135341f0800e3d415312ae8.gif        StatusBar1.Text 
= "完成"
img_05dd8d549cff04457a6366b0a7c9352a.gif
    End Sub

上次很多东东都没说细,这次说细一点,
http://www.cnblogs.com/CatalogOpml.aspx这个就是博客园分类列表的XML地址了,在博客园的首面有公布的
接下来存入一个临时文件中以供后面使用
TreeView1.Nodes.Item(0).Nodes.Item(1).Nodes.Add()
这个方法就是给treeview1根节点下面的第一个节点添加子节点了
listnodelist(i).Attributes.ItemOf("title").InnerText()
这个方法是取出XML中这一节点列表中INDEX为I的项的title属性的值

再下来是读取博客列表了,就不用重复说明
img_a6339ee3e57d1d52bc7d02b338e15a60.gif      ' 读取博客列表
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
     Private   Sub loadlist() Sub loadlist()
img_33d02437d135341f0800e3d415312ae8.gif        
Dim i As Integer
img_33d02437d135341f0800e3d415312ae8.gif        
Dim xmlList As New XmlDocument
img_33d02437d135341f0800e3d415312ae8.gif        StatusBar1.Text 
= "正在读取博客列表信息img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif"
img_33d02437d135341f0800e3d415312ae8.gif
        xmlList.Load("http://www.cnblogs.com/Opml.aspx")
img_33d02437d135341f0800e3d415312ae8.gif        xmlList.Save(Application.StartupPath 
& "~list.xml")
img_33d02437d135341f0800e3d415312ae8.gif        
Dim listnodelist As XmlNodeList
img_33d02437d135341f0800e3d415312ae8.gif        listnodelist 
= xmlList.SelectNodes("/opml/body/outline")
img_33d02437d135341f0800e3d415312ae8.gif        
For i = 0 To listnodelist.Count - 1
img_33d02437d135341f0800e3d415312ae8.gif            TreeView1.Nodes.Item(
0).Nodes.Item(1).Nodes.Add(listnodelist(i).Attributes.ItemOf("title").InnerText())
img_33d02437d135341f0800e3d415312ae8.gif        
Next
img_33d02437d135341f0800e3d415312ae8.gif        StatusBar1.Text 
= "完成"
img_05dd8d549cff04457a6366b0a7c9352a.gif
    End Sub

再接下来就是treeview节点的选择事件的处理过程了
img_405b18b4b6584ae338e0f6ecaf736533.gif img_1c53668bcee393edac0d7b3b3daff1ae.gif Private   Sub TreeView1_AfterSelect() Sub TreeView1_AfterSelect(ByVal sender As System.ObjectByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
img_33d02437d135341f0800e3d415312ae8.gif        
Select Case TreeView1.SelectedNode.Text
img_33d02437d135341f0800e3d415312ae8.gif            
Case "博客园分类"
img_33d02437d135341f0800e3d415312ae8.gif
                loadport()
img_33d02437d135341f0800e3d415312ae8.gif            
Case "博客列表"
img_33d02437d135341f0800e3d415312ae8.gif
                loadlist()
img_33d02437d135341f0800e3d415312ae8.gif            
Case "博客园"
img_33d02437d135341f0800e3d415312ae8.gif

img_33d02437d135341f0800e3d415312ae8.gif
            Case Else
img_33d02437d135341f0800e3d415312ae8.gif                
Dim i, j As Integer
img_33d02437d135341f0800e3d415312ae8.gif                
Dim xmltitle As New XmlDocument
img_33d02437d135341f0800e3d415312ae8.gif                xmltitle.Load(Application.StartupPath 
& "~port.xml")
img_33d02437d135341f0800e3d415312ae8.gif                
Dim nodelist As XmlNodeList
img_33d02437d135341f0800e3d415312ae8.gif                nodelist 
= xmltitle.SelectNodes("/opml/body/outline/outline")
img_33d02437d135341f0800e3d415312ae8.gif                j 
= nodelist.Count - 1
img_33d02437d135341f0800e3d415312ae8.gif                
For i = 0 To j
img_33d02437d135341f0800e3d415312ae8.gif                    
If nodelist(i).Attributes.ItemOf("title").InnerText() = TreeView1.SelectedNode.Text Then
img_33d02437d135341f0800e3d415312ae8.gif                        TextBox1.Text 
= nodelist(i).Attributes.ItemOf("xmlUrl").InnerText()
img_33d02437d135341f0800e3d415312ae8.gif                        thread 
= New Thread(AddressOf loadrss)
img_33d02437d135341f0800e3d415312ae8.gif                        thread.Start()
img_33d02437d135341f0800e3d415312ae8.gif                        
Exit For
img_33d02437d135341f0800e3d415312ae8.gif                    
End If
img_33d02437d135341f0800e3d415312ae8.gif                
Next
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif                xmltitle.Load(Application.StartupPath 
& "~list.xml")
img_33d02437d135341f0800e3d415312ae8.gif                nodelist 
= xmltitle.SelectNodes("/opml/body/outline")
img_33d02437d135341f0800e3d415312ae8.gif                j 
= nodelist.Count - 1
img_33d02437d135341f0800e3d415312ae8.gif                
For i = 0 To j
img_33d02437d135341f0800e3d415312ae8.gif                    
If nodelist(i).Attributes.ItemOf("title").InnerText() = TreeView1.SelectedNode.Text Then
img_33d02437d135341f0800e3d415312ae8.gif                        TextBox1.Text 
= nodelist(i).Attributes.ItemOf("xmlUrl").InnerText()
img_33d02437d135341f0800e3d415312ae8.gif                        thread 
= New Thread(AddressOf loadrss)
img_33d02437d135341f0800e3d415312ae8.gif                        thread.Start()
img_33d02437d135341f0800e3d415312ae8.gif                        
Exit For
img_33d02437d135341f0800e3d415312ae8.gif                    
End If
img_33d02437d135341f0800e3d415312ae8.gif                
Next
img_33d02437d135341f0800e3d415312ae8.gif        
End Select
img_05dd8d549cff04457a6366b0a7c9352a.gif    
End Sub

三个过程,还算清淅了,嘿嘿!这个功能就完成了
当然还能加上别的Opml的导入功能
我这里分类名是死的,其实这些也是可以动态取出来的。
相关文章
|
10天前
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
|
机器学习/深度学习 算法 计算机视觉
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)(下)
说明 动机 贡献 方法 发现 EagleEye剪枝算法 实验 实验1- 相关性的定量分析 实验2-基于自适应BN的评估方法的通用性 实验3-从修剪候选中选择最佳修剪策略的计算成本 实验4-Effectiveness of our proposed method 总结与讨论
119 0
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)(下)
|
机器学习/深度学习 算法 计算机视觉
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)(上)
说明 动机 贡献 方法 发现 EagleEye剪枝算法 实验 实验1- 相关性的定量分析 实验2-基于自适应BN的评估方法的通用性 实验3-从修剪候选中选择最佳修剪策略的计算成本 实验4-Effectiveness of our proposed method 总结与讨论
142 0
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)(上)
|
Windows
利用.NET做“电子书阅读器”原来这么简单(其实你也可以做出金山词霸)
一、利用.NET做“电子书阅读器”原来这么简单 先下载组件:Interop.SpeechLib.dll  (http://files.cnblogs.com/waw/Interop.SpeechLib.
1136 0
|
并行计算 .NET C#
浅谈.NET下的多线程和并行计算(十三)CLR via C#第三版阅读笔记(2)
线程同步的问题 1) 我们必须找到代码中所有可能被多个线程同时访问的资源,然后使用线程同步来保护资源,并且我们没有办法来验证是不是正确进行了线程同步,包括是否有遗漏和是否对不需要同步的资源进行同步。 2) 线程同步是有损性能的,如果某个操作大量执行,并且这个操作原先的执行时间非常短,那么如果我们对这段操作前后进行锁的申请和释放的话性能可能下降一个数量级。
901 0
|
XML .NET C#
开发,配置,调用-三步走构建简单的asp.net webservice(C#)-适合初学者阅读
http://www.cnblogs.com/farrah/archive/2009/04/03/1429099.html   前两天,工作中遇到需要开发一个简单的webservice 网上搜索了不少文章,可是讲的很全面的还真是不多。
1129 0
|
XML 定位技术 C#
ASP.NET的SEO:Linq to XML---网站地图和RSS Feed
本系列目录网站地图的作用是让搜索引擎尽快的,更多的收录网站的各个网页。    这里我们首先要明白一个基本的原理,搜索引擎的爬行方式。整个互联网就像一张纵横交错的“网”:网的各个节点就是各个网页,而各个网页之间通过url相互连接。
1029 0