Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

How-to use RSS in WRT widgets

From Wiki
Jump to: navigation, search
Article Metadata
Compatibility
Platform(s): S60 3rd Edition FP 2
Symbian
Article
Created: forum-mrkt (03 Oct 2007)
Last edited: hamishwillee (10 Oct 2012)

Contents

Example code

This is example contains JavaScript example code for parsing RSS feed. As such RSS parsing is done using standard JavaScript functions - however developers should take into account the possibility of error conditions specific to mobile devices:

  • No SIM inserted
  • No access point available
  • Connection canceled by the end user

request

function loadRSSFeed(url) {
if (null == req) {
req = new XMLHttpRequest();
}
 
req.onreadystatechange = ReqStateChange;
 
req.open("GET", url, true);
req.send(null);
 
document.getElementById("content").innerHTML = "Updating" + url;
}

request callback

function ReqStateChange() {
if (req.readyState == 4) {
 
if (req.status == 200) {
UpdateContent(req);
}
else {
/*
* if widget is totally dependent of network connection you
* might consider notifying end user. error may occur due to
* network error (GSM/3G), no SIM inserted, invalid access point etc.
* detailed information is not available.
*/

alert("error");
}
}
}

RSS parser

function UpdateContent(reqst) {
var d = null;
var el = document.getElementById("content");
 
document.getElementById("content").innerHTML = "Updating!";
 
var rss = null;
 
var html = "";
rss = reqst.responseXML.documentElement;
 
if (rss != null) {
var itemTitleNodes = rss.getElementsByTagName("title");
var itemLinkNodes = rss.getElementsByTagName("link");
var itemDescNodes = rss.getElementsByTagName("description");
 
var c=itemTitleNodes.length;
 
el.innerHTML="Displaying " + c + " items...";
 
if (c<=0) {
return;
};
 
if (c>4) c=3; // limit to four stories
 
for (var i = 0; i < c; i++) {
var itemLink, itemTitle, itemDesc;
 
if ((itemTitleNodes[i+2].childNodes[0] != null) &&
(itemLinkNodes[i+2].childNodes[0] != null) &&
(itemDescNodes[i+1].childNodes[0] != null)) {
 
itemTitle = itemTitleNodes[i+2].childNodes[0].nodeValue;
itemLink = itemLinkNodes[i+2].childNodes[0].nodeValue;
itemDesc = itemDescNodes[i+1].childNodes[0].nodeValue;
}
else {
itemTitle = "RSS feed missing";
itemLink = "???";
itemDesc = "RSS broken";
}
html = html + "<div class='item'><div class='linking'
onClick='widget.openURL(\""
+ itemLink +
"\");'>"+itemTitle+"</div></br><div
class='description'>"
+itemDesc+"</div></div></br>";
}
}
 
el.innerHTML = html;
html = null;
el = null;
req = null;
 
d = document.getElementById("lastupdate");
}
This page was last modified on 10 October 2012, at 05:46.
52 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×