FileDocCategorySizeDatePackage
AttributeListImpl.javaAPI DocAndroid 1.5 API9077Wed May 06 22:41:06 BST 2009org.xml.sax.helpers

AttributeListImpl

public class AttributeListImpl extends Object implements AttributeList
Default implementation for AttributeList.
This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.

AttributeList implements the deprecated SAX1 {@link org.xml.sax.AttributeList AttributeList} interface, and has been replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl AttributesImpl} interface.

This class provides a convenience implementation of the SAX {@link org.xml.sax.AttributeList AttributeList} interface. This implementation is useful both for SAX parser writers, who can use it to provide attributes to the application, and for SAX application writers, who can use it to create a persistent copy of an element's attribute specifications:

private AttributeList myatts;

public void startElement (String name, AttributeList atts)
{
// create a persistent copy of the attribute list
// for use outside this method
myatts = new AttributeListImpl(atts);
[...]
}

Please note that SAX parsers are not required to use this class to provide an implementation of AttributeList; it is supplied only as an optional convenience. In particular, parser writers are encouraged to invent more efficient implementations.

deprecated
This class implements a deprecated interface, {@link org.xml.sax.AttributeList AttributeList}; that interface has been replaced by {@link org.xml.sax.Attributes Attributes}, which is implemented in the {@link org.xml.sax.helpers.AttributesImpl AttributesImpl} helper class.
since
SAX 1.0
author
David Megginson
version
2.0.1 (sax2r2)
see
org.xml.sax.AttributeList
see
org.xml.sax.DocumentHandler#startElement

Fields Summary
Vector
names
Vector
types
Vector
values
Constructors Summary
public AttributeListImpl()
Create an empty attribute list.

This constructor is most useful for parser writers, who will use it to create a single, reusable attribute list that can be reset with the clear method between elements.

see
#addAttribute
see
#clear

    
public AttributeListImpl(AttributeList atts)
Construct a persistent copy of an existing attribute list.

This constructor is most useful for application writers, who will use it to create a persistent copy of an existing attribute list.

param
atts The attribute list to copy
see
org.xml.sax.DocumentHandler#startElement

    setAttributeList(atts);
    
Methods Summary
public voidaddAttribute(java.lang.String name, java.lang.String type, java.lang.String value)
Add an attribute to an attribute list.

This method is provided for SAX parser writers, to allow them to build up an attribute list incrementally before delivering it to the application.

param
name The attribute name.
param
type The attribute type ("NMTOKEN" for an enumeration).
param
value The attribute value (must not be null).
see
#removeAttribute
see
org.xml.sax.DocumentHandler#startElement

    names.addElement(name);
    types.addElement(type);
    values.addElement(value);
    
public voidclear()
Clear the attribute list.

SAX parser writers can use this method to reset the attribute list between DocumentHandler.startElement events. Normally, it will make sense to reuse the same AttributeListImpl object rather than allocating a new one each time.

see
org.xml.sax.DocumentHandler#startElement

    names.removeAllElements();
    types.removeAllElements();
    values.removeAllElements();
    
public intgetLength()
Return the number of attributes in the list.

return
The number of attributes in the list.
see
org.xml.sax.AttributeList#getLength

    return names.size();
    
public java.lang.StringgetName(int i)
Get the name of an attribute (by position).

param
i The position of the attribute in the list.
return
The attribute name as a string, or null if there is no attribute at that position.
see
org.xml.sax.AttributeList#getName(int)

    if (i < 0) {
        return null;
    }
    try {
        return (String)names.elementAt(i);
    } catch (ArrayIndexOutOfBoundsException e) {
        return null;
    }
    
public java.lang.StringgetType(java.lang.String name)
Get the type of an attribute (by name).

param
name The attribute name.
return
The attribute type as a string ("NMTOKEN" for an enumeration, and "CDATA" if no declaration was read).
see
org.xml.sax.AttributeList#getType(java.lang.String)

    return getType(names.indexOf(name));
    
public java.lang.StringgetType(int i)
Get the type of an attribute (by position).

param
i The position of the attribute in the list.
return
The attribute type as a string ("NMTOKEN" for an enumeration, and "CDATA" if no declaration was read), or null if there is no attribute at that position.
see
org.xml.sax.AttributeList#getType(int)

    if (i < 0) {
        return null;
    }
    try {
        return (String)types.elementAt(i);
    } catch (ArrayIndexOutOfBoundsException e) {
        return null;
    }
    
public java.lang.StringgetValue(int i)
Get the value of an attribute (by position).

param
i The position of the attribute in the list.
return
The attribute value as a string, or null if there is no attribute at that position.
see
org.xml.sax.AttributeList#getValue(int)

    if (i < 0) {
        return null;
    }
    try {
        return (String)values.elementAt(i);
    } catch (ArrayIndexOutOfBoundsException e) {
        return null;
    }
    
public java.lang.StringgetValue(java.lang.String name)
Get the value of an attribute (by name).

param
name The attribute name.
return
the named attribute's value or null, if the attribute does not exist.
see
org.xml.sax.AttributeList#getValue(java.lang.String)

    return getValue(names.indexOf(name));
    
public voidremoveAttribute(java.lang.String name)
Remove an attribute from the list.

SAX application writers can use this method to filter an attribute out of an AttributeList. Note that invoking this method will change the length of the attribute list and some of the attribute's indices.

If the requested attribute is not in the list, this is a no-op.

param
name The attribute name.
see
#addAttribute

    int i = names.indexOf(name);
    
    if (i >= 0) {
        names.removeElementAt(i);
        types.removeElementAt(i);
        values.removeElementAt(i);
    }
    
public voidsetAttributeList(org.xml.sax.AttributeList atts)
Set the attribute list, discarding previous contents.

This method allows an application writer to reuse an attribute list easily.

param
atts The attribute list to copy.

    int count = atts.getLength();
    
    clear();
    
    for (int i = 0; i < count; i++) {
        addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i));
    }