SAX2 extension helper for additional Attributes information,
implementing the
This is not part of core-only SAX2 distributions.
Method from org.xml.sax.ext.Attributes2Impl Detail: |
public void addAttribute(String uri,
String localName,
String qName,
String type,
String value) {
super.addAttribute (uri, localName, qName, type, value);
int length = getLength ();
if (length < specified.length) {
boolean newFlags [];
newFlags = new boolean [length];
System.arraycopy (declared, 0, newFlags, 0, declared.length);
declared = newFlags;
newFlags = new boolean [length];
System.arraycopy (specified, 0, newFlags, 0, specified.length);
specified = newFlags;
}
specified [length - 1] = true;
declared [length - 1] = !"CDATA".equals (type);
}
Add an attribute to the end of the list, setting its
"specified" flag to true. To set that flag's value
to false, use #setSpecified .
Unless the attribute type is CDATA, this attribute
is marked as being declared in the DTD. To set that flag's value
to true for CDATA attributes, use #setDeclared . |
public boolean isDeclared(int index) {
if (index < 0 || index >= getLength ())
throw new ArrayIndexOutOfBoundsException (
"No attribute at index: " + index);
return declared [index];
}
Returns the current value of the attribute's "declared" flag. |
public boolean isDeclared(String qName) {
int index = getIndex (qName);
if (index < 0)
throw new IllegalArgumentException (
"No such attribute: " + qName);
return declared [index];
}
Returns the current value of the attribute's "declared" flag. |
public boolean isDeclared(String uri,
String localName) {
int index = getIndex (uri, localName);
if (index < 0)
throw new IllegalArgumentException (
"No such attribute: local=" + localName
+ ", namespace=" + uri);
return declared [index];
}
Returns the current value of the attribute's "declared" flag. |
public boolean isSpecified(int index) {
if (index < 0 || index >= getLength ())
throw new ArrayIndexOutOfBoundsException (
"No attribute at index: " + index);
return specified [index];
}
Returns the current value of an attribute's "specified" flag. |
public boolean isSpecified(String qName) {
int index = getIndex (qName);
if (index < 0)
throw new IllegalArgumentException (
"No such attribute: " + qName);
return specified [index];
}
Returns the current value of an attribute's "specified" flag. |
public boolean isSpecified(String uri,
String localName) {
int index = getIndex (uri, localName);
if (index < 0)
throw new IllegalArgumentException (
"No such attribute: local=" + localName
+ ", namespace=" + uri);
return specified [index];
}
Returns the current value of an attribute's "specified" flag. |
public void removeAttribute(int index) {
int origMax = getLength () - 1;
super.removeAttribute (index);
if (index != origMax) {
System.arraycopy (declared, index + 1, declared, index,
origMax - index);
System.arraycopy (specified, index + 1, specified, index,
origMax - index);
}
}
|
public void setAttributes(Attributes atts) {
int length = atts.getLength ();
super.setAttributes (atts);
declared = new boolean [length];
specified = new boolean [length];
if (atts instanceof Attributes2) {
Attributes2 a2 = (Attributes2) atts;
for (int i = 0; i < length; i++) {
declared [i] = a2.isDeclared (i);
specified [i] = a2.isSpecified (i);
}
} else {
for (int i = 0; i < length; i++) {
declared [i] = !"CDATA".equals (atts.getType (i));
specified [i] = true;
}
}
}
Copy an entire Attributes object. The "specified" flags are
assigned as true, and "declared" flags as false (except when
an attribute's type is not CDATA),
unless the object is an Attributes2 object.
In that case those flag values are all copied. |
public void setDeclared(int index,
boolean value) {
if (index < 0 || index >= getLength ())
throw new ArrayIndexOutOfBoundsException (
"No attribute at index: " + index);
declared [index] = value;
}
Assign a value to the "declared" flag of a specific attribute.
This is normally needed only for attributes of type CDATA,
including attributes whose type is changed to or from CDATA. |
public void setSpecified(int index,
boolean value) {
if (index < 0 || index >= getLength ())
throw new ArrayIndexOutOfBoundsException (
"No attribute at index: " + index);
specified [index] = value;
}
Assign a value to the "specified" flag of a specific attribute.
This is the only way this flag can be cleared, except clearing
by initialization with the copy constructor. |