blogjava's web log

          blogjava's web log
          ...

          讀新浪博客示例[源代碼下載]

          ??????????? 當(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
          ????????????????????????????????}

          ????????????????????????????????
          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

          點擊這里直接下載




          posted on 2006-10-23 15:50 record java and net 閱讀(697) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動態(tài)語言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評論

          主站蜘蛛池模板: 阿拉善盟| 东兰县| 宜君县| 惠来县| 台北市| 长白| 拜城县| 临夏县| 西和县| 平昌县| 博兴县| 康平县| 嘉峪关市| 丽江市| 乾安县| 开江县| 旌德县| 梅河口市| 察隅县| 郓城县| 宾川县| 尚志市| 景德镇市| 巨鹿县| 承德市| 沈丘县| 安阳县| 冷水江市| 蕲春县| 石首市| 许昌县| 临安市| 和林格尔县| 江陵县| 龙口市| 吉林省| 北辰区| 浏阳市| 虹口区| 皮山县| 武夷山市|