@Override
    public void startElement(String namespaceURI, String localName,
            String qName, Attributes atts) throws SAXException {
        // Push the appropriate ElementHandler to the stack
        if (qName.equalsIgnoreCase("SVG")) {
            elementHandlers.push(new SVGElementHandler());
        } else if (qName.equalsIgnoreCase("Text")) {
            elementHandlers.push(new TextElementHandler());
        } else if (qName.equalsIgnoreCase("Rect")) {
            elementHandlers.push(new RectElementHandler());
        } else if (qName.equalsIgnoreCase("Circle")) {
            elementHandlers.push(new CircleElementHandler());
        } else if (qName.equalsIgnoreCase("Path")) {
            elementHandlers.push(new PathElementHandler());
        } else if (qName.equalsIgnoreCase("Line")) {
            elementHandlers.push(new LineElementHandler());
        } else if (qName.equalsIgnoreCase("ClipPath")) {
            elementHandlers.push(new ClipPathElementHandler());
        } else {
            elementHandlers.push(new ElementHandler());
        }

        // Call startElement for the top element on the stack
        elementHandlers.peek()
                .startElement(namespaceURI, localName, qName, atts);
    }