SAX drivers bug ... or feature !

Tyler Baker tyler at infinet.com
Sat Nov 21 21:45:32 GMT 1998


Toivo Lainevool wrote:

> ---Ronald Bourret <rbourret at ito.tu-darmstadt.de> wrote:
> >
> > Patrice Bonhomme wrote:
> >
> > > I think there is a little problem with AttributeList implementation
> > within
> > > some of the SAX drivers (i have tested the following code with my
> SXP SAX
> > > driver, the XML4J SAX driver and the AELFRED SAX driver. We are all
> > giving the
> > > same results (gosh...).
> > >
> > > This code should write the size of each AttributeList that has
> been read
> > by
> > > the parser when it reached the end of the Document. But it always
> prints
> > the
> > > size of the last AtributeList found.
> > >
> > > [code snipped]
> >
> > It is a good bet that all the parsers are doing what I have done in
> my
> > parsers: used a single instance of an AttributeList object, then
> cleared it
> > and reused it for each call to startElement.  Thus, all the
> references in
> > your Vector point to the same object.
> >
> > This is specifically allowed by the SAX spec.  The documentation for
> > AttributeList states, "The instance provided will return valid
> results only
> > during the scope of the startElement invocation (to save it for
> future use,
> > the application must make a copy: the AttributeListImpl helper class
> > provides a convenient constructor for doing so)."
>
> Instead of clearing and reusing the the AttributeList object, wouldn't
> it be better to create a new attribute list object?  If the old
> Attribute list isn't being referenced, it will be garbage collectible.
> If the old Attribute list is being reference, it won't be changed out
> from under the client.  This way of doing it seems to offer the best
> of both worlds.

Well performance is an issue and calling new() for each attribute list creation
would incur significant overhead regardless of whether you are using Java or C++
or calling malloc in C.  You can consider the attribute list in SAX to be fail
fast, just like the java.util.Iterator implementations in the new Collections
framework.

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