@Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { String elem = localName; if (elem.isEmpty()) { elem = qName; } elemStack.addFirst(elem); ElementHandler contextHandler = handlerStack.getFirst(); ElementHandler elemHandler = contextHandler.getHandler(elem); if (elemHandler == null) { throw new IllegalStateException( String.format( "Context handler %s have not returned handler for elem %s", contextHandler, elemStack)); } handlerStack.addFirst(elemHandler); elemHandler.startElement(attributes); }