AttributeMap (was Re: Announcement: SAX 1998-01-12 Draft)

Matthew Gertner matthewg at
Thu Jan 15 13:02:49 GMT 1998

>> >At the very least provide an isEmpty() so that I don't have to do the
>> >allocation in the common case there are no attributes.
>> I didn't understand this. Why is an AttributeList interface inherently
>> efficient than AttributeMap? The use of an AttributeMap interface doesn't
>> imply the creation of an object per start tag, any more than
>> does.
>Because to iterate over the AttributeMap an Enumeration object has to
>get allocated.  AttributeList allows iteration over the attributes
>without having to do any allocation.

Okay, I thought you were talking about the instantiation of the map
implementation itself. The fact of the matter is that, although there is
some overhead to instantiating an iterator object, looping over a list of
attributes and doing n string compares is not all that efficient either. It
just depends on what your priority is: iterating or name lookup. The
instantiation of the object is only necessary if you want to iterate (now I
understand what you meant by "isEmpty"). It might not be too off-the-wall to
claim that the lookup by name will be the more frequent usage case for SAX.

I like the AttributeMap interface with a "getIterator()" method because it
is simple, elegant and standard. If there is a general consensus that the
performance issue is significant (to be honest I am not entirely convinced
that this will be a bottleneck), your AttributeList interface is just fine,
since it provides both types of access.



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

More information about the Xml-dev mailing list