📄 attributesimpl.java
字号:
// AttributesImpl.java - default implementation of Attributes.// http://www.saxproject.org// Written by David Megginson// NO WARRANTY! This class is in the public domain.// $Id: AttributesImpl.java,v 1.11 2004/12/11 15:41:10 dog Exp $package org.xml.sax.helpers;import org.xml.sax.Attributes;/** * Default implementation of the Attributes interface. * * <blockquote> * <em>This module, both source code and documentation, is in the * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a> * for further information. * </blockquote> * * <p>This class provides a default implementation of the SAX2 * {@link org.xml.sax.Attributes Attributes} interface, with the * addition of manipulators so that the list can be modified or * reused.</p> * * <p>There are two typical uses of this class:</p> * * <ol> * <li>to take a persistent snapshot of an Attributes object * in a {@link org.xml.sax.ContentHandler#startElement startElement} event; or</li> * <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li> * </ol> * * <p>This class replaces the now-deprecated SAX1 {@link * org.xml.sax.helpers.AttributeListImpl AttributeListImpl} * class; in addition to supporting the updated Attributes * interface rather than the deprecated {@link org.xml.sax.AttributeList * AttributeList} interface, it also includes a much more efficient * implementation using a single array rather than a set of Vectors.</p> * * @since SAX 2.0 * @author David Megginson * @version 2.0.1 (sax2r2) */public class AttributesImpl implements Attributes{ //////////////////////////////////////////////////////////////////// // Constructors. //////////////////////////////////////////////////////////////////// /** * Construct a new, empty AttributesImpl object. */ public AttributesImpl () { length = 0; data = null; } /** * Copy an existing Attributes object. * * <p>This constructor is especially useful inside a * {@link org.xml.sax.ContentHandler#startElement startElement} event.</p> * * @param atts The existing Attributes object. */ public AttributesImpl (Attributes atts) { setAttributes(atts); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.Attributes. //////////////////////////////////////////////////////////////////// /** * Return the number of attributes in the list. * * @return The number of attributes in the list. * @see org.xml.sax.Attributes#getLength */ public int getLength () { return length; } /** * Return an attribute's Namespace URI. * * @param index The attribute's index (zero-based). * @return The Namespace URI, the empty string if none is * available, or null if the index is out of range. * @see org.xml.sax.Attributes#getURI */ public String getURI (int index) { if (index >= 0 && index < length) { return data[index*5]; } else { return null; } } /** * Return an attribute's local name. * * @param index The attribute's index (zero-based). * @return The attribute's local name, the empty string if * none is available, or null if the index if out of range. * @see org.xml.sax.Attributes#getLocalName */ public String getLocalName (int index) { if (index >= 0 && index < length) { return data[index*5+1]; } else { return null; } } /** * Return an attribute's qualified (prefixed) name. * * @param index The attribute's index (zero-based). * @return The attribute's qualified name, the empty string if * none is available, or null if the index is out of bounds. * @see org.xml.sax.Attributes#getQName */ public String getQName (int index) { if (index >= 0 && index < length) { return data[index*5+2]; } else { return null; } } /** * Return an attribute's type by index. * * @param index The attribute's index (zero-based). * @return The attribute's type, "CDATA" if the type is unknown, or null * if the index is out of bounds. * @see org.xml.sax.Attributes#getType(int) */ public String getType (int index) { if (index >= 0 && index < length) { return data[index*5+3]; } else { return null; } } /** * Return an attribute's value by index. * * @param index The attribute's index (zero-based). * @return The attribute's value or null if the index is out of bounds. * @see org.xml.sax.Attributes#getValue(int) */ public String getValue (int index) { if (index >= 0 && index < length) { return data[index*5+4]; } else { return null; } } /** * Look up an attribute's index by Namespace name. * * <p>In many cases, it will be more efficient to look up the name once and * use the index query methods rather than using the name query methods * repeatedly.</p> * * @param uri The attribute's Namespace URI, or the empty * string if none is available. * @param localName The attribute's local name. * @return The attribute's index, or -1 if none matches. * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String) */ public int getIndex (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return i / 5; } } return -1; } /** * Look up an attribute's index by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's index, or -1 if none matches. * @see org.xml.sax.Attributes#getIndex(java.lang.String) */ public int getIndex (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return i / 5; } } return -1; } /** * Look up an attribute's type by Namespace-qualified name. * * @param uri The Namespace URI, or the empty string for a name * with no explicit Namespace URI. * @param localName The local name. * @return The attribute's type, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getType(java.lang.String,java.lang.String) */ public String getType (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return data[i+3]; } } return null; } /** * Look up an attribute's type by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's type, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getType(java.lang.String) */ public String getType (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return data[i+3]; } } return null; } /** * Look up an attribute's value by Namespace-qualified name. * * @param uri The Namespace URI, or the empty string for a name * with no explicit Namespace URI. * @param localName The local name. * @return The attribute's value, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getValue(java.lang.String,java.lang.String) */ public String getValue (String uri, String localName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i].equals(uri) && data[i+1].equals(localName)) { return data[i+4]; } } return null; } /** * Look up an attribute's value by qualified (prefixed) name. * * @param qName The qualified name. * @return The attribute's value, or null if there is no * matching attribute. * @see org.xml.sax.Attributes#getValue(java.lang.String) */ public String getValue (String qName) { int max = length * 5; for (int i = 0; i < max; i += 5) { if (data[i+2].equals(qName)) { return data[i+4]; } } return null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -