System.setProperty("org.xml.sax.driver","org.apache.crimson.parser.XMLReaderImpl");
String newDefault = "org.apache.crimson.parser.XMLReaderImpl"; XRLog.load(Level.WARNING, "No value for system property 'org.xml.sax.driver'.");
    public static final XMLReader newXMLReader() {        XMLReader saxParser = null;        String xmlReaderClass = Configuration.valueFor("xr.load.xml-reader");        try {            if ( xmlReaderClass != null && !xmlReaderClass.toLowerCase().equals("default")) {                saxParser = XMLReaderFactory.createXMLReader( xmlReaderClass );            }        } catch ( Exception ex ) {            XRLog.load(Level.WARNING,                    "Could not instantiate XMLReader class for XML parsing: "                    + xmlReaderClass +". Please check classpath. Use value 'default' in " +                    "FS configuration if necessary. Will now try JDK default.", ex);        }        if ( saxParser == null ) {            try {                // JDK default                // HACK: if                 if ( System.getProperty("org.xml.sax.driver") == null ) {                    System.setProperty("org.xml.sax.driver","org.apache.crimson.parser.XMLReaderImpl");                }                saxParser = XMLReaderFactory.createXMLReader();                xmlReaderClass = "{JDK default}";            } catch ( Exception ex ) {                XRLog.general(ex.getMessage());            }        }        if ( saxParser == null ) {            throw new XRRuntimeException("Could not instantiate any SAX 2 parser, including JDK default. " +                    "The name of the class to use should have been read from the org.xml.sax.driver System " +                    "property, which is set to: " + System.getProperty("org.xml.sax.driver"));        }        XRLog.load( "SAX XMLReader in use (parser): " + saxParser.getClass().getName() );        return saxParser;    }