愤怒的大鸟 发表于 2015-1-16 22:49:57

ASP.NET网页设计实例:用Visual C#制造旧事浏览器

不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……visual  1、弄清布局再下手

  要想轻松的抽取RSS信息,天然先要懂得它的布局,所谓“亲信知彼,百战百胜”嘛。

  1、RSS的布局

  我们先翻开百度旧事一个RSS链接,假如你再多翻开几一般的网站的RSS链接,会发明他们都有大抵不异的布局。而我们在揭秘RSS(上)中为人人解说的实在就是编成完成如许的一个XML文件。

  为了可以便利地对如许的XML文档举行处置,在本文里,我们利用C#作为开辟的言语。

  剖析全部RSS链接后,我们晓得RSS大抵的布局进。



  2、抽取的道理

  晓得了却构,我们还要晓得布局中各部分的寄义。在中RSS节点暗示以后是一个RSS文件,它由一个CHANNEL节点及其子节点构成,个中一些子节点供应关于频道自己的信息,好比title暗示频道的称号(“百度互联网旧事”)。

  CHANNEL节点又包括多个ITEM子节点,而ITEM节点就是程序必要处置的部分,由于它对应着每条实践的旧事项信息,每一个ITEM节点又经由过程其子节点供应关于这条旧事的具体信息,好比title暗示旧事的题目(“微软IM称王”),link对应旧事实践的链接。

  RSS详细标准可检察http://blogs.law.harvard.edu/tech/rss

  晓得了这些后,要编程就不坚苦啦。我们只需提取并显现出CHANNEL和ITEM下的各条信息就能够了。如今来看看详细的完成办法吧。

  二.做个程序读旧事

  对RSS有必定懂得后,我们入手下手编写程序。先仍是必要一个最复杂的界面。新建一个WinForm工程,在Form上安排一个Label,一个文本框txtURL用来输出RSS链接(就是各网站RSS链接中包括的地点),一个按钮bnRead用来实行读取旧事,一个TreeView树形控件treeRSS显现读出的旧事项。

  1、界说装载布局

  依据下面剖析的RSS布局,我们起首来创建一个rss类,用它来装载RSS链接中CHANNEL和ITEM的各条信息。代码以下:

publicclassrss
{
 publicstructChannel
 {
  publicstringTitle;
  publicHashtableItems;
 }

 publicstructItem
 {
  publicstringTitle;
  publicstringDescription;
  publicstringLink;
 }
}
  Channel布局将存储CHANNEL节点包括的一切子节点信息,个中Items成员字段是一个Hashtable汇合,程序会将Item布局作为工具到场汇合,用来存储Channel下的一切Item节点。这里我只读取了无限的几个节点,读者能够依据实践必要扩大全部布局界说。
<P>  2、从RSS链接中猎取旧事信息

  如今我们就能够入手下手编写读取函数,将抽掏出的RSS信息放进下面计划好的布局中。

  C#供应了专门的类来会见XML,使我们可以轻松地读出RSS的内容。代码以下:

XmlTextReaderReader=newXmlTextReader(URL);
XmlValidatingReaderValid=newXmlValidatingReader(Reader);
Valid.ValidationType=ValidationType.None;
XmlDocumentxmlDoc=newXmlDocument();
xmlDoc.Load(Reader);
  利用XmlDocument类将txtURL中输出的RSS链接加载后,起首经由过程FoundChildNode函数,找到Channel节点。

privateXmlNodeFoundChildNode(XmlNodeNode,stringName)
{
 XmlNodechildlNode=null;
 for(inti=0;i<Node.ChildNodes.Count;i++)
 {
  if(Node.ChildNodes.Name==Name&&Node.ChildNodes.ChildNodes.Count>0)
  {
   childlNode=Node.ChildNodes;
   returnchildlNode;
  }
 }
 returnchildlNode;
}
XmlNoderssNode=FoundChildNode(xmlDoc,"rss");
XmlNodechannelNode=FoundChildNode(rssNode,"channel");
  然后我们就能够遍历它的子节点,依据子节点的Name属性,读取我们必要的信息。

rss.Channelchannel=newrss.Channel();
channel.Items=newHashtable();
{
 switch(channelNode.ChildNodes.Name)
 {
  case"title":
   {
    channel.Title=channelNode.ChildNodes.InnerText;
    break;
   }
  case"item":
   {
    rss.Itemitem=this.getRssItem(channelNode.ChildNodes);
    channel.Items.Add(channel.Items.Count,item);
    break;
   }
 }
}
  假如发明是item子节点,就挪用getRssItem函数,一样经由过程遍历子节点的办法,将其子节点内容填进Item布局中,然后再增加到Channel布局的Items汇合中。由于本程序其实不体贴增加到汇合的键值,只必要它是不反复的值,以是我传进了Count属性。

  3.将读出的信息显现在程序中

  将RSS内容读出后,就必要把信息展现给用户了。我们这里用的是基础的TreeView办法,经由过程遍历Channel布局的Items汇合,将其题目增加到TreeView中。

privatevoidViewRss(rss.Channelchannel)
{
 treeRss.BeginUpdate();
 treeRss.Nodes.Clear();
 TreeNodechannelNode=treeRss.Nodes.Add(channel.Title);
 channelNode.Tag="";
 for(inti=0;i<channel.Items.Count;i++)
 {
  rss.Itemitem=(rss.Item)channel.Items;
  TreeNodeitemNode=channelNode.Nodes.Add(item.Title);
  itemNode.Tag=item.Link;
 }
 treeRss.ExpandAll();
 treeRss.EndUpdate();
}
  同时我们还能够设置TreeView的每一个子节点的Tag属性为它对应的链接。以便利选中子节点时就能够经由过程读取Tag属性会见详细的信息。

privatevoidtreeRss_AfterSelect(objectsender,System.Windows.Forms.TreeViewEventArgse)
{
 TreeNodeitemNode=e.Node;
 stringURL=itemNode.Tag.ToString();
 if(URL.Length!=0)
  System.Diagnostics.Process.Start(URL);
}
  程序运转效果如。




  三.小结

  怎样,一个复杂的RSS旧事浏览器就按后面所说轻松完成了,简单吧。固然它另有良多不敷,但假如人人经由过程这个例子学会了抽取RSS链接信息的基础办法,那就充足了!
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)

海妖 发表于 2015-1-20 05:15:41

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

只想知道 发表于 2015-1-20 05:15:41

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

谁可相欹 发表于 2015-1-28 18:08:49

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

灵魂腐蚀 发表于 2015-2-5 22:24:41

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

山那边是海 发表于 2015-2-13 22:50:42

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

若天明 发表于 2015-3-4 02:49:03

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

分手快乐 发表于 2015-3-11 15:35:28

是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。

透明 发表于 2015-3-19 01:25:43

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

深爱那片海 发表于 2015-3-27 01:10:24

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
页: [1]
查看完整版本: ASP.NET网页设计实例:用Visual C#制造旧事浏览器