if (localName != null && localName.length() != 0) {
name = localName;
} else if (qName != null && qName.length() != 0) {
name = qName;
}
ElementProcessor processor;
try {
processor = getElementProcessorFactory().createElementProcessor(name);
} catch (CannotCreateElementProcessorException e) {
throw SAXExceptionFactory("could not process startElement event", e);
}
doPreInitialization(processor);
Attribute[] attributes = (atts == null) ? new Attribute[0]
: new Attribute[atts.getLength()];
for (int j = 0; j < attributes.length; j++) {
attributes[j] = new Attribute(atts.getQName(j), atts.getValue(j));
}
try {
processor.initialize(attributes, getCurrentElementProcessor());
} catch (IOException e) {
throw SAXExceptionFactory("Exception processing startElement", e);
}
this.openElements.push(processor);
}