spacer

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

home / experts / xml / column26

Tools Update: RSSApplet and Xparse-J

Sr. Web Developer
mediabistro.com
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume
Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?


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

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

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

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business

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