spacer

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

home / experts / xml / column26

Tools Update: RSSApplet and Xparse-J

JAVA Developer – Trading Industry (NYC)
Next Step Systems
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume
Developer News
ActiveState Debuts Open Source Business Suite
Salesforce Offers Visual App Builder
Codesion Steps Out From CVS's Shadow


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 >
Use Web Caching to Make Your Web Site Faster · Creating an Online Shopping Cart Mechanism in PHP · Log JavaScript Errors Using an AJAX-driven Web Service
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Configuring Granular Settings for a Database Level Audit · The Perils of a Web 2.0 Transition on Your Business Processes · Facebook Redesigns Site —Again — Nears 400M Mark

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