All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xml.sax.helpers.AttributeListImpl Maven / Gradle / Ivy

// SAX default implementation for AttributeList.
// http://www.saxproject.org
// No warranty; no copyright -- use this as you will.
// $Id: AttributeListImpl.java,v 1.6 2002/01/30 20:52:22 dbrownell Exp $

package org.xml.sax.helpers;

import java.util.ArrayList;
import org.xml.sax.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 */ @Deprecated public class AttributeListImpl implements AttributeList { /** * 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 () { } /** * 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 */ public AttributeListImpl (AttributeList atts) { setAttributeList(atts); } //////////////////////////////////////////////////////////////////// // Methods specific to this class. //////////////////////////////////////////////////////////////////// /** * 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. */ public void setAttributeList (AttributeList atts) { int count = atts.getLength(); clear(); for (int i = 0; i < count; i++) { addAttribute(atts.getName(i), atts.getType(i), atts.getValue(i)); } } /** * 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 */ public void addAttribute(String name, String type, String value) { names.add(name); types.add(type); values.add(value); } /** * 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 */ public void removeAttribute(String name) { int i = names.indexOf(name); if (i != -1) { names.remove(i); types.remove(i); values.remove(i); } } /** * 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 */ public void clear() { names.clear(); types.clear(); values.clear(); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.AttributeList //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in the list. * * @return The number of attributes in the list. * @see org.xml.sax.AttributeList#getLength */ public int getLength() { return names.size(); } /** * 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) */ public String getName(int i) { if (i < 0 || i >= names.size()) { return null; } return names.get(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) */ public String getType(int i) { if (i < 0 || i >= types.size()) { return null; } return types.get(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) */ public String getValue(int i) { if (i < 0 || i >= values.size()) { return null; } return values.get(i); } /** * 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) */ public String getType(String name) { return getType(names.indexOf(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) */ public String getValue(String name) { return getValue(names.indexOf(name)); } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private ArrayList names = new ArrayList(); private ArrayList types = new ArrayList(); private ArrayList values = new ArrayList(); } // end of AttributeListImpl.java




© 2015 - 2024 Weber Informatics LLC | Privacy Policy