@Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        level++;
        Tag tag = getTagClass(qName);
        tagsStack.add(tag);
        tag.setStack(tagsStack);
        tag.setName(qName);
        tag.setAttributes(attributes);
        tag.setAbsoluteClassName(absoluteClassName);
        try {
            tag.init();
            doBeginChildElement();
            tag.doBeginTag(writerGroovy);
            writerXml.writeStartElement(qName);
            for (int i = 0, len = attributes.getLength(); i < len; i++) {
                writerXml.writeAttribute(attributes.getQName(i), attributes.getValue(i));
            }
            if (level == 1) {
                writerXml.writeAttribute("lastModified", lastModified);
            }
        } catch (Exception e) {
            closeStreams();
            throw new SAXException(e.getMessage(), e);
        }
    }