Android: проверка XML с использованием SAX не работает (IllegalArgumentException)

Я анализирую файлы XML, которые находятся во внутренней памяти моего приложения, с помощью синтаксического анализатора SAX. Это работает без проблем, но я также хочу проверить файлы перед разбором.

Я провел небольшое исследование и нашел следующий класс для работы с Eclipse Mars и Windows 7 (источник: http://www.rgagnon.com/javadetails/java-0669.html):

public static boolean validateWithExtXSDUsingSAX(String xml, String xsd)
        throws ParserConfigurationException, IOException {
    try {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setValidating(false);
        factory.setNamespaceAware(true);

        SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI));
        SAXParser parser = null;
        try {
            factory.setSchema(schemaFactory.newSchema(new Source[] { new StreamSource(xsd) }));
            parser = factory.newSAXParser();
        } catch (SAXException se) {
            System.out.println("SCHEMA : " + se.getMessage()); // problem in the XSD itself
            return false;
        }

        XMLReader reader = parser.getXMLReader();
        reader.setErrorHandler(new ErrorHandler() {
            @Override
            public void warning(SAXParseException e) throws SAXException {
                System.out.println("WARNING: " + e.getMessage()); // do nothing
            }

            @Override
            public void error(SAXParseException e) throws SAXException {
                System.out.println("ERROR : " + e.getMessage());
                throw e;
            }

            @Override
            public void fatalError(SAXParseException e) throws SAXException {
                System.out.println("FATAL : " + e.getMessage());
                throw e;
            }
        });
        reader.parse(new InputSource(xml));
        return true;
    } catch (ParserConfigurationException pce) {
        throw pce;
    } catch (IOException io) {
        throw io;
    } catch (SAXException se) {
        return false;
    }
}

Но когда я хочу использовать этот класс с Android Studio 1.3 и Android 5.1 (API 22), я получаю только ошибки:

java.lang.IllegalArgumentException: http://www.w3.org/2001/XMLSchema
at javax.xml.validation.SchemaFactory.newInstance(SchemaFactory.java:192)

Но, согласно странице разработки, это должно быть правильно: http://developer.android.com/reference/javax/xml/validation/SchemaFactory.html

Должен ли я использовать другую форму проверки моих XML-файлов на Android?

заранее спасибо

PS: я должен использовать SAX, нет возможности использовать другой парсер.

РЕДАКТИРОВАТЬ: при использовании этого решения VenomFangs Я получаю эту ошибку:

java.lang.NullPointerException: Attempt to invoke virtual method 'javax.xml.validation.Validator javax.xml.validation.Schema.newValidator()' on a null object reference

person user1318160    schedule 04.08.2015    source источник