public boolean load() {
        firstTag = true;
        try {
            SAXParserFactory p = SAXParserFactory.newInstance();
            p.setFeature("http://xml.org/sax/features/validation", false);
            p.setValidating(false);
            parser = p.newSAXParser();
            reader = parser.getXMLReader();
            reader.setContentHandler(this);
            reader.setEntityResolver(this);
            reader.setDTDHandler(null);
            reader.setFeature("http://xml.org/sax/features/validation", false);
            InputSource source = new InputSource(getIn());
            if (getEncoding() != null) {
                source.setEncoding(getEncoding());
            }
            source.setSystemId(getName());
            reader.parse(source);
        }
        catch (FactoryConfigurationError e) {
        	e.printStackTrace();
            return false;
        }
        catch (SAXParseException e) {
        	e.printStackTrace();
            return false;
        }
        catch (RuntimeException e) {
        	e.printStackTrace();
            return false;
        }
        catch (Exception e) {
        	e.printStackTrace();
            return false;
        }
        catch (OutOfMemoryError e) {
        	e.printStackTrace();
        	return false;
        }
        finally {
            try {
                getIn().close();
            }
            catch (IOException e) {}
        }
        return true;
    }