blogjava's web log
blogjava's web log
...
读新浪博客示例[源代码下载]
当然。只是个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
#region
item classes
case
"
rss
"
:
readData
=
false
;
break
;
case
"
channel
"
: ;
readData
=
false
;
break
;
#endregion
}
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
点击这里直接下载
posted on 2006-10-23 15:50
record java and net
阅读(693)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
导航
首页
联系
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(44)
给我留言
查看公开留言
查看私人留言
新闻档案
2007年5月 (1)
2007年4月 (1)
2007年3月 (4)
2007年1月 (8)
2006年12月 (16)
2006年11月 (3)
2.动态语言
IronPython
JRuby
Python
Rails Framework Documentation
Ruby Central
Ruby on rails
Ruby On Rails中文社区
Ruby 中文社区
Ruby_cn (blog)
ruby-doc
Rubyforge
Ruby-lang
3.工具箱
computer performance
写字找图片
网站历史查询
驱动
9.
文档教程
Free Computer Books
New!
Spring2.0中文参考手册
New
Apache ant1.6.2源代码
Apache2.2 文档
Dhtml参考
hibernate三中文文档
java api
javascript参考
mysql中文文档
NHibernate 1.2文档
Spring - Framework
spring--教程
spring源代码学习
XPath 教程
夏昕ibatis
夏昕的Hibernate
夏昕的Spring
友情链接
搬家公司
讨债公司
搜索
最新评论
1. re: 周公解梦梦见猪血洒头上手上
不错
--娟娟