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

          ????????????????????????????????
          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.aygfsteel.com/Files/wujun/WjSinaArticlesDemo.rar

          點擊這里直接下載




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


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


          網站導航:
           

          導航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動態語言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評論

          主站蜘蛛池模板: 中卫市| 拜城县| 通化县| 双牌县| 龙川县| 朔州市| 库车县| 石家庄市| 四川省| 龙陵县| 花莲市| 松桃| 天长市| 桂阳县| 南安市| 宁明县| 潜江市| 宜春市| 诸城市| 红安县| 宜丰县| 阿巴嘎旗| 乌兰察布市| 宜章县| 慈溪市| 湘西| 长顺县| 密山市| 岫岩| 来安县| 柯坪县| 如东县| 晋宁县| 晋城| 孝昌县| 揭西县| 利辛县| 武胜县| 太白县| 印江| 互助|