
	      E-XML Library:  For XML, XML-RPC, HTTP, and related.
			 Copyright (C) 2002  Elias Ross

genman@maison-otaku.net
http://maison-otaku.net/~genman


				  WHAT IS IT?

This library is a collection of tools for parsing XML.  For better or worse,
DOM and SAX are fairly heavy-weight and cumbersome parsing tools, which have
lead others to create libraries such as JDOM and KXML (Enhydra).  For most
of you, the Xerces library will be just fine, and I suggest you stick with
that if performance is not a big problem.


			       PARSE PERFORMANCE

XML parsing is pretty damn inefficient, at least when you're parsing
hundreds of XML messages a second.  Take a look at XMLSParser.  It
is a XML pull-parser (look that up on Google) which makes it very
cheap in terms of object creation overhead.

Most of the pull-parsers don't support String pools or allow for
re-using existing objects.  Most small-footprint parsers have lousy
performance, often much worse than Xerces SAX and DOM.

If you test this library's performance against Xerces DOM, it's comparable 
(perhaps a little faster) for reading a whole document.

For the ultimate in parse speed, use XmlSParser.


				 STREAMING XML

Another problem is handling streaming protocol data, which can't be
gracefully done with SAX, and cannot be done with any DOM parsers.
An XML pull-parser makes it fairly simple to write efficient protocol
handling routines.  However, the XML pull-parsers I've seen are fairly
cumbersome as well, maybe because they were designed for low-memory
devices.

The XmlParser class lets you parse streaming data in a straight-forward
manner.  XmlSParser is a little more complicated to use, and does not
support DTD validation.


				    XML-RPC

I include an XML-RPC implementation which streams XML data over HTTP.
It doesn't do any fancy object marshalling or demarshalling, but you can
follow my example package and implement your own streaming conversion routines.


			  RELATED TOOLS AND LIBRARIES

The java.net.URLConnection library is not very good at sending streaming data,
so I had to write my own HTTP library.  It's not exactly user-friendly, but it
is better than any other library I've seen so far.  You will have to write
your own "smart" HttpClient if you want to do more than what I wrote there.


			   EXAMPLES AND DOCUMENTATION

First, create the Java-Docs.  Take a look at the "src-test" directory, which
demonstrates every method in the library.  Since this is open-source, you
of course have access to the source code.  Please send me e-mail if you
have a suggestion.

I will eventually add in example programs later.

