Xparse-J Update 1.1 (2/2) - exploring XML | WebReference

Xparse-J Update 1.1 (2/2) - exploring XML

Xparse-J Update 1.1

Code Change

The code change of Node.find() is relatively minor:

  public Node find(String path, int[] occur) {
    Node n = this;
    JSArray a = new JSArray();
    a.split(path, "/");
    int i = 0;
    while (i 

The findChildElement() method is now called with every corresponding occurrence parameter in order to return the n-th Node of the respective simple path expression, i.e. child element. Be prepared to catch an IndexOutOfBounds exception if the array does not have as many elements as the path expression.

Adapting the RSSViewerApplet was quite straightforward as well:

  public void load(String srcURL) throws Exception {
    int dim[] = {1, 1};
    root = new Xparse().parse(readChannel(srcURL));
	...
    while (true) {
      n = top.find("item/title", dim);
      if (n == null) break;
      items.insertElementAt(n.getCharacters(), 2*dim[0]-2);
      n = top.find("item/link", dim);
      if (n == null) break;
      items.insertElementAt(new URL(n.getCharacters()), 2*dim[0]-1);
      ++dim[0];
    }
  }

The loop over RSS items happens in the first dimension of the occurrence array, as every item only has one title and one link. Everything else remains unchanged.

Conclusion

With this update to Node.find() Xparse-J is now a truly generic tool for parsing and manipulating XML documents. If you can live without all the hard 'n heavy W3C functionality present in the heavyweights of Xerces and xml4j, give Xparse-J a try!

Produced by Michael Claßen

URL: http://www.webreference.com/xml/column36/2.html
Created: Aug 01, 2001
Revised: Aug 01, 2001