Stack overflow är min nya favoritsida, det finns många duktiga programmerare där att inspireras av. För några dagar sen skrev någon om Syndication Feed klassen i en tråd och jag tyckte den såg smidig ut och bestämde mig för att göra en ny startsida m.h.a den, (min gamla finns här). Samtidigt har jag sneglat en hel del på JSON senaste tiden så jag slog två flugor i en smäll.
Jag hittade ett bra json exempel här som jag modifierade lite. Resultatet blev en betydligt snabbare sida än min gamla och kanske 75% mindre kod. Plockade ut det viktigaste ur koden som man kan se nedan om någon vill göra en egen variant.

//---------------Javascript----------------------
function getDN() {
 Param = new Array();Param.push("url");
 Param.push("http://www.dn.se/m/rss/senaste-nytt");Param.push(
"takeItems");
 Param.push(10);
 $(
"#dn").append("<h2>DAGENS NYHETER</h2>");
 PageMethod('ReadRss', Param, "#dn");
}

function
PageMethod(fn, paramArray, div) {
  var pagePath = window.location.pathname;
 
var paramList = '';
if (paramArray.length > 0) {
    for (var i = 0; i < paramArray.length; i += 2) {
       if (paramList.length > 0) paramList += ',';paramList +=
'"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
     }
}
 paramList =
'{' + paramList + '}';
$.ajax({
 type:
"POST",
 url: pagePath + "/" + fn,
 contentType:
"application/json; charset=utf-8",
 data: paramList,
 dataType:
"json",
 success: function(response) {
 
var rssItems = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
 for (var i = 0; i < rssItems.length; i++) {$(div).append(
 
"<a href='" + rssItems[i].link + "' target='_blank' alt='" + rssItems[i].title + "'><h3>" + rssItems[i].title + "</h3></a>");
 
if (rssItems[i].content != null) {$(div).append("<span class='published'>[" + rssItems[i].published + "]</span>");$(div).append("<p>" + rssItems[i].content +"</p>"); }
}
},
 
error: function(msg) { $(div).append(msg); }
});

}

//-------------------Codebehind C#---------------------------------------------

[WebMethod]
public static List<RSSItem> ReadRss(string url, int takeItems)
{
  
List<RSSItem> rssItems = new List<RSSItem>();
try
{
 
var feed = XmlReader.Create(url);
 
var feedItems = SyndicationFeed.Load(feed).GetRss20Formatter().Feed.Items;
  if (takeItems > feedItems.Count())
       
takeItems = feedItems.Count();
 
var returnItems = (from feedItem in feedItems
                           
select feedItem).Take(takeItems);

foreach (var item in returnItems)
{
 
RSSItem rssItem = new RSSItem();
try
{
  rssItem.title = item.Title.Text;
  rssItem.link = item.Id;
  rssItem.published = item.PublishDate.ToString(
"HH:mm yyyy-MM-dd");
  rssItem.content = item.Summary.Text;
  rssItems.Add(rssItem);
}
catch (Exception ex2)
{
  rssItems.Add(rssItem);
}
}
}
catch (Exception ex)
{
RSSItem errorItem = new RSSItem { title = ex.Message };
rssItems.Add(errorItem);
}
return rssItems;

}

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Min alldeles egna RSS läsare

November 19, 2008

Jag har gjort en liten RSS-läsare skriven i C#, ASP.NET och XHTML. Den första versionen av den här RSS-läsaren var rätt seg när man läste in den första gången. Det berodde på att den läste in alla feeds på en gång och det tog någon minut kanske, medan sidan läste såg användaren bara en tom sida vilket inte var så kul. Jag har försökt göra den snabbare genom att använda AJAX och läsa in några feeds i taget. Jag är rätt grön på AJAX-området men updatepanel och updateprogress är väl allt man behöver ;) Är mer intresserad av att lära mig JQuery just nu och ska satsa på det.

Ta en titt på RSS-läsaren

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5