spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / xml / column26

Tools Update: RSSApplet and Xparse-J

Service Release Technical Architect Sr (PA)
Next Step Systems
US-PA-Philadelphia

Justtechjobs.com Post A Job | Post A Resume
Developer News
OpenOffice 3.2 Lands Amid Critical Changes
Red Hat, IBM Firmly in KVM Virtualization Camp
Red Hat Talks Up Open Source Cloud Plans


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:

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...

http://www.internet.com


The Network for Technology Professionals

Search:

About Internet.com

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers

webref The latest from WebReference.com Browse >
Search Engine Optimization: Selecting and Embedding Keywords · Are Google's Language Translation Web Services Ready for Prime Time? · Installing and Using Meeplace, the Business Review CMS
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
IBM DB2 10 for z/OS: Justifying the Upgrade · Living La Vida Colo: Choosing the Right Colocation Facility · FTC Concerns over Social Media Privacy Linger

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