| home / experts / xml / column26 |
|
|
Webmasters need tools for many technologies, and XML is no exception. The venerable RSSViewerApplet had a few problems and limitations that have been removed in the newly released version 1.2.
First and foremost there is better compatibility with the RSS 0.91 version upgrade from 0.9:
<rss version="0.91"> instead of
<rdf:RDF rdf:xmlns="..." xmlns="...">
Let's look at the necessary code changes. The previous version
is documented in column11. The
RSSChannel loading procedure needs to be made
more flexible:
public void load(String srcURL) throws Exception {
root = new Xparse().parse(readChannel(srcURL));
Node doc = root.find("RDF", 1);
if (doc == null) doc = root.find("rss", 1);
if (doc == null) throw new Exception(" or missing, is this an RSS file?");
The doc node represents the top node of the RSS file, which
in RSS 0.9 was identified by <rdf:RDF xmlns="..." rdf:xmlns="...">.
This established RSS as an application of the Resource Description
Framework (RDF), using namespaces to distinguish RDF tags from
RSS elements. RSS 0.91 declared <rss version="0.91">
as the root node, so my code fix now tries to find one or the other,
and gives up with an error message if it could not.
Node n = doc.find("channel/title", 1);
if (n == null) throw new Exception("<channel><title> missing.");
channelTitle = n.getCharacters();
n = doc.find("channel/link", 1);
if (n == null) throw new Exception("<channel><link> missing.");
channelLink = new URL(n.getCharacters());
The rest has been changed to also give error messages for missing
channel titles and links instead of throwing NullPointerExceptions
as in the previous versions.
items = new Vector();
int pos = 0;
while (true) {
n = doc.find("item/title", pos+1);
if (n == null) break;
items.insertElementAt(n.getCharacters(), 2*pos);
n = doc.find("item/link", pos+1);
if (n == null) break;
items.insertElementAt(new URL(n.getCharacters()), 2*pos+1);
++pos;
}
}
All references to RSS elements that are not yet used in this applet have been removed.
More code...
| ||||||||||||||||||||
Produced by Michael Claßen
All Rights Reserved. Legal Notices.
URL: http://www.webreference.com/xml/column26/index.html
Created: Dec 15, 2000
Revised: Dec 15, 2000