讀新浪博客示例[源代碼下載]
??????????? 當(dāng)然。只是個DEMO. 功能還是很簡單。BUG? 也不少。有興趣你可以下載 自己再改改。
?界面:

閱讀界面:

關(guān)鍵代碼:
?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;
????????}
詳細(xì) 請下載源代碼研究。。
地址
http://www.aygfsteel.com/Files/wujun/WjSinaArticlesDemo.rar
點擊這里直接下載
?界面:

閱讀界面:

關(guān)鍵代碼:
?public??static?ArrayList?read(string?url,?HttpWebRequest?request,?bool?isFirst)






















????????????????????????Encoding.GetEncoding(response.ContentEncoding);
























分析 新浪的RSS? 就是用的這個方法了。
??????/**////?<summary>






































































































































詳細(xì) 請下載源代碼研究。。
地址
http://www.aygfsteel.com/Files/wujun/WjSinaArticlesDemo.rar
點擊這里直接下載
posted on 2006-10-23 15:50 record java and net 閱讀(697) 評論(0) 編輯 收藏