SAX: finalising org.sax.xml.Parser
David Megginson
ak117 at freenet.carleton.ca
Tue Feb 24 13:48:16 GMT 1998
Don Park writes:
> If I remember correctly, what David is trying to do is provide us with means
> to parse XML data from a byte stream as well as character stream. Since
> Reader will actually hide the byte-based aspect of the data stream, it in
> inappropriate for our purpose.
>
> XML character stream is also very useful when XML data is generated and
> processed within a framework. In such a system, converting character
> streams to byte stream and then converting it back to character stream is
> unnecessary.
This is true, but I think that James's point is well taken. The
character _buffer_ doesn't really buy us anything. I am reluctant to
use a character reader for two reasons:
1) It is a concept that doesn't translate well to languages other than
Java (or even to Java 1.0.2 for that matter).
2) It imposes another architectural requirement on SAX-conformant
parsers (the ability to receive characters directly, bypassing the
normal input mechanisms), and I'm trying to keep interference to a
minimum.
It is slightly inefficient to go from characters to a byte stream to
characters, but it's not that bad (especially if we use ISO-8859-1 or
UCS-2 for the encoding), and it keeps SAX simple and general. Given
the discussion so far, then, we are ending up with something like
this:
package org.xml.sax;
import java.io.InputStream;
public interface Parser {
public abstract void setEntityHandler (EntityHandler handler);
public abstract void setDocumentHandler (DocumentHandler handler);
public abstract void setErrorHandler (ErrorHandler handler);
public abstract void parse (String publicId, String systemId)
throws java.lang.Exception;
public abstract void parse (String publicId, String systemId,
InputStream inputStream)
throws java.lang.Exception;
}
If you need more, you can always extend the interface:
package com.acme.xml;
import java.io.Reader;
public interface SuperParser extends org.xml.sax.Parser {
public abstract void parse (String publicId, String systemId,
Reader reader)
throws java.lang.Exception;
}
In an ideal world, we'd also have some kind of ability to ask to
parser to turn validation on or off, but I'm not certain that that's
practical: any thoughts?
All the best,
David
--
David Megginson ak117 at freenet.carleton.ca
Microstar Software Ltd. dmeggins at microstar.com
http://home.sprynet.com/sprynet/dmeggins/
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