+ public String getQName() { return qName; }
+ public String getLocalName() { return localName; }
+ public String getPrefix() { return prefix; }
+ public String getUri() { return uri; }
+
+ // Attributes
+
+ /** attr[index + 0] // localName
+ * attr[index + 1] // value
+ * attr[index + 2] // uri
+ * attr[index + 3] // prefix */
+ private String[] attr = null;
+ private int attrSize = 0;
+
+ void addAttr(String key, String val, String uri, String pfx) {
+ if (attr == null) {
+ attr = new String[DEFAULT_ATTR_COUNT * 4];
+ } else if (attrSize == attr.length / 4) {
+ String[] newattr = new String[attr.length * 2];
+ System.arraycopy(attr, 0, newattr, 0, attr.length);
+ attr = newattr;
+ }
+
+ attr[attrSize * 4 + 0] = key;
+ attr[attrSize * 4 + 1] = val;
+ attr[attrSize * 4 + 2] = uri;
+ attr[attrSize * 4 + 3] = pfx;
+ attrSize++;
+ }
+
+ public int getIndex(String qName) {
+ if (qName == null || qName.length() == 0) return -1;
+ int pos = qName.indexOf(':');
+ if (pos < 1) return getIndex(null, qName);
+ return getIndex(uri(qName.substring(0, pos)), qName.substring(pos+1));
+ }
+
+ public int getIndex(String uri, String key) {
+ if (attr != null) for(int i=0; i < attrSize; i++)
+ if (attr[i*4].equals(key) && attr[i*4+1].equals(uri)) return i;
+ return -1;