/** @see org.castor.xml.InternalContext#getXMLReader(java.lang.String) */ public XMLReader getXMLReader(final String features) { XMLReader reader = null; Boolean validation = _configuration.getBoolean(XMLConfiguration.PARSER_VALIDATION); Boolean namespaces = _configuration.getBoolean(XMLConfiguration.NAMESPACES); String readerClassName = _configuration.getString(XMLConfiguration.PARSER); if (readerClassName == null || readerClassName.length() == 0) { SAXParser saxParser = XMLParserUtils.getSAXParser(validation.booleanValue(), namespaces.booleanValue()); if (saxParser != null) { try { reader = saxParser.getXMLReader(); } catch (SAXException e) { LOG.error(Messages.format("conf.configurationError", e)); } } } if (reader == null) { if ((readerClassName == null) || (readerClassName.length() == 0) || (readerClassName.equalsIgnoreCase("xerces"))) { readerClassName = "org.apache.xerces.parsers.SAXParser"; } reader = XMLParserUtils.instantiateXMLReader(readerClassName); } XMLParserUtils.setFeaturesOnXmlReader( _configuration.getString(XMLConfiguration.PARSER_FEATURES, features), _configuration.getString(XMLConfiguration.PARSER_FEATURES_DISABLED, ""), validation.booleanValue(), namespaces.booleanValue(), reader); return reader; } // -- getXMLReader