惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
V
Visual Studio Blog
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
C
Check Point Blog
D
Docker
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
博客园 - 叶小钗
博客园 - 聂微东
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
腾讯CDC
S
SegmentFault 最新的问题
博客园 - 【当耐特】

博客园 - hello csharp

[导入]Nhibernate引入自定义Membership和Role 推荐个不错的屏幕捕获程序 测试Google Docs 发布的文章.。。 Guidelines – a hidden feature for the Visual Studio Editor Gridview, ObjectDataSource Making life easy Applied MS Reporting Services 101 using Smart Client Database Provider-based ASP.NET Membership Provider HTMLEditor Provider - How to write a custom provider for ASP.NET 2.0 Firebug-javascript/css/ajax/dom调试器【这款不错】 Automatic Sql Server Backup Utility Using sqlserveragent LiveWriter测试 发布个小软件给大伙玩玩 [js小技巧]鼠标移到图片高亮度显示 dot net html分析类库 系统发邮件测试 Dumbster 【小技巧】如何得到一个网页的所有a标记 herf 链接代码 Intellisense for the NHibernate XML Schemas Develop Reports Using Crystal Reports in .NET 2005 [小技巧]winfrom使用多线程
读新浪博客示例[源代码下载]
hello csharp · 2006-10-23 · via 博客园 - hello csharp

            当然。只是个DEMO. 功能还是很简单。BUG  也不少。有兴趣你可以下载 自己再改改。
 界面

阅读界面:

关键代码:

 public  static ArrayList read(string url, HttpWebRequest request, bool isFirst)
        
{
            Stream stream 
= null;
            Uri uri 
= new Uri(url);
            
switch (uri.Scheme)
            
{
                
case "file":
                    
break;
                
case "https":
                    
goto case "http";
                
case "http":
                    
if (request == null)
                        request 
= (HttpWebRequest)WebRequest.Create(uri);
                    
try
                    
{
                        HttpWebResponse response 
= (HttpWebResponse)request.GetResponse();
                        
try
                        
{
                            
if (response.ContentEncoding != "")
                        Encoding.GetEncoding(response.ContentEncoding);
                        }
                        
catch { }
                        stream 
= response.GetResponseStream();
                    }

                    
catch (WebException we)
                    
{
                    }

                    
break;
            }

            ArrayList list 
= null;
            
if (stream != null)
            
{
                RssSina rssSina 
= new RssSina(stream);

                list
= rssSina.Read(isFirst);
                rssSina.Close();
                                      }
            
return list;
           
        }


分析 新浪的RSS  就是用的这个方法了。
      /// <summary>
        
/// Read rss
        
/// </summary>
        
/// <returns></returns>

        public ArrayList Read(bool isFirst)
        
{
            
int i = 0;
            StringBuilder sb 
= new StringBuilder();
            
bool readData = false;
            
if (reader != null)
            
{
                
do
                
{
                    pushElement 
= true;
                    readData 
= reader.Read();
                    
string readerName = reader.Name.ToLower();
                    
switch (reader.NodeType)
                    
{
                  
                        
case XmlNodeType.Element:
                            
{
                                elementText 
= new StringBuilder();
                                
if (reader.IsEmptyElement)
                                    
break;
                                
if (pushElement)
                                    xmlNodeStack.Push(readerName);
                                
break;

                            }

                        
case XmlNodeType.EndElement:
                            
{
                                
if (xmlNodeStack.Count == 1)
                                    
break;
                                
string childElementName = (string)xmlNodeStack.Pop();
                                
string parentElementName = (string)xmlNodeStack.Peek();

                                
switch (childElementName)
                                
{
                                    
item classes
                                }

                                
switch (parentElementName)
                                
{
                                       
                                    
case "sns:a":
                                        
switch (childElementName)
                                        
{
                                            
case "sns:href":
                                                
if (isFirst)
                                                
{
                                                   
                                                    
if (!pageList.Contains(elementText.ToString()) && elementText.ToString().Length != 0)
                                                    
{
                                                        
                                                        pageList.Add(elementText.ToString());
                                                    }

                                                   
                                                }

                                                
break;
                                        }

                                        
break;
                                        

                                    
case "item":
                                        
switch (childElementName)
                                        
{
                                            
case "title":
                                               
// listTitle.Add(elementText.ToString());
                                                break;
                                            
case "link":
                                               linkList.Add(elementText.ToString());
                                                
break;
                                            
case "description":

                                                
break;
                                            
case "sns:pubDate":
                                                
break;

                                        }

                                        
break;
                                }


                                
break;

                            }

                            
case XmlNodeType.Text:
                            
{
                                elementText.Append(reader.Value);
                                
break;
                            }

                            
case XmlNodeType.CDATA:
                            
{
                                elementText.Append(reader.Value);
                                i
++;
                                
break;
                            }

                    }

                }

                
while (readData);
                
            }

            listCont.Add(linkList);
            
if(pageList.Count!=0)
                listCont.Add(pageList);
            
return listCont;
        }

详细 请下载源代码研究。。
地址
http://www.blogjava.net/Files/wujun/WjSinaArticlesDemo.rar

点击这里直接下载