From d5d7de57e3ccd0205610a181a0186d0a6dd74b4d Mon Sep 17 00:00:00 2001 From: "scott%scott-macgregor.org" Date: Tue, 20 Sep 2005 22:12:33 +0000 Subject: [PATCH] Bug #300983 --> RSS Reader unable to parse feeds which contain xmlns parameters pointing to missing files Patch by Robert Sayre. --- .../newsblog/content/feed-parser.js | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/mail/extensions/newsblog/content/feed-parser.js b/mail/extensions/newsblog/content/feed-parser.js index b58ff5d6d6ce..2f4033e02819 100644 --- a/mail/extensions/newsblog/content/feed-parser.js +++ b/mail/extensions/newsblog/content/feed-parser.js @@ -104,15 +104,15 @@ FeedParser.prototype = if (!channel) return aFeed.onParseError(aFeed); - aFeed.title = aFeed.title || getNodeValue(channel.getElementsByTagName("title")[0]); - aFeed.description = getNodeValue(channel.getElementsByTagName("description")[0]); - aFeed.link = getNodeValue(channel.getElementsByTagName("link")[0]); + aFeed.title = aFeed.title || getNodeValue(channel.getElementsByTagNameNS("","title")[0]); + aFeed.description = getNodeValue(channel.getElementsByTagNameNS("","description")[0]); + aFeed.link = getNodeValue(channel.getElementsByTagNameNS("","link")[0]); if (!aFeed.parseItems) return parsedItems; aFeed.invalidateItems(); - var itemNodes = aDOM.getElementsByTagName("item"); + var itemNodes = aDOM.getElementsByTagNameNS("","item"); for (var i=0; i < itemNodes.length; i++) { @@ -121,8 +121,8 @@ FeedParser.prototype = item.feed = aFeed; item.characterSet = "UTF-8"; - var link = getNodeValue(itemNode.getElementsByTagName("link")[0]); - var guidNode = itemNode.getElementsByTagName("guid")[0]; + var link = getNodeValue(itemNode.getElementsByTagNameNS("","link")[0]); + var guidNode = itemNode.getElementsByTagNameNS("","guid")[0]; var guid; var isPermaLink; if (guidNode) @@ -137,17 +137,17 @@ FeedParser.prototype = item.url = link ? link : (guid && isPermaLink) ? guid : null; item.id = guid; - item.description = getNodeValue(itemNode.getElementsByTagName("description")[0]); - item.title = getNodeValue(itemNode.getElementsByTagName("title")[0]) + item.description = getNodeValue(itemNode.getElementsByTagNameNS("","description")[0]); + item.title = getNodeValue(itemNode.getElementsByTagNameNS("","title")[0]) || (item.description ? (this.stripTags(item.description).substr(0, 150)) : null) || item.title; - item.author = getNodeValue(itemNode.getElementsByTagName("author")[0] - || itemNode.getElementsByTagName("creator")[0]) + item.author = getNodeValue(itemNode.getElementsByTagNameNS("","author")[0] + || itemNode.getElementsByTagNameNS("","creator")[0]) || aFeed.title || item.author; - item.date = getNodeValue(itemNode.getElementsByTagName("pubDate")[0] - || itemNode.getElementsByTagName("date")[0]) + item.date = getNodeValue(itemNode.getElementsByTagNameNS("","pubDate")[0] + || itemNode.getElementsByTagNameNS("","date")[0]) || item.date; // If the date is invalid, users will see the beginning of the epoch @@ -166,14 +166,13 @@ FeedParser.prototype = var content = getNodeValue(itemNode.getElementsByTagNameNS(RSS_CONTENT_NS, "encoded")[0]); // Handle an enclosure (if present) - var enclosureNode = itemNode.getElementsByTagName("enclosure")[0]; + var enclosureNode = itemNode.getElementsByTagNameNS("","enclosure")[0]; if (enclosureNode) item.enclosure = new FeedEnclosure(enclosureNode.getAttribute("url"), enclosureNode.getAttribute("type"), enclosureNode.getAttribute("length")); parsedItems[i] = item; } - return parsedItems; },