SAX conferment parser

Tyler Baker tyler at infinet.com
Wed Sep 16 18:51:09 BST 1998


Usha_R2 at verifone.com wrote:

> Hi! All,
>   I want to use the SAX method for parsing my XML files. Can anybody
> please tell me which is the best SAX conferment parser written in Java.
> I want the parser to be ONLY a SAX conferment parser i.e. it should not
> be both DOM & SAX conferment. I need this since for my application size
> is very important issue.
>
> Thanks in advance.
> Usha,
> K. Usha Rani

Your best bet would be to download several parsers and test them out.  Here is
the source to a SAX Timer Test I have made up for my parser (not yet released for
various non-technical reasons).  From what I have seen, Aelfred is the smallest
of the fully conformant SAX related parsers in terms of bytecodes, but XP is the
fastest in terms of speed.  In terms of memory usage, you will be much better off
with any streaming based-parser like Aelfred or XP than a tree-based parser like
IBM's XML for Java (another SAX compliant parser).

BTW, the following code takes one or two arguments.  The first argument is a URL
to the XML file you want to parse.  The second argument is the number of times
you want to parse the file.   I recommend parsing a file at least 4 times when
using a JIT because the first pass of each method is not compiled to native form
(it is interpreted) and significant time is spent in the JIT compiling the
bytecodes to native form.  Once this happens at least once, the real speed of the
parser can be assessed.

Usage would be something like:

java -Dorg.xml.sax.parser=SAX_DRIVER_CLASS_NAME Benchmark file:/foo/bar.xml 5

// Begin
import java.io.*;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class Benchmark {
  public static void main(String[] args) {
    try {
      Runtime rt = Runtime.getRuntime();
      int length = (args.length >= 2) ? Integer.parseInt(args[1]) : 1;

      long begin, end;
      long free;
      String input = args[0];

      HandlerBase handler = new HandlerBase();
      Parser parser;
      for (int i = 0; i < length; i++) {
        parser = ParserFactory.makeParser();
        parser.setEntityResolver(handler);
        parser.setDTDHandler(handler);
        parser.setDocumentHandler(handler);
        parser.setErrorHandler(handler);
        System.gc();
        System.gc();
        System.gc();
        free = rt.freeMemory();
        begin = System.currentTimeMillis();
        parser.parse(input);
        end = System.currentTimeMillis();
        System.out.println("Parsing Time: "  + (end - begin));
        System.out.println("Memory Used: "  + (free - rt.freeMemory()));
        System.out.println();
      }
    } catch (Exception e) {
      e.printStackTrace(System.out);
    }
  }
}
// End

Tyler


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list