private void validateXML(DOMSource source) throws Exception { URL schemaFile = new URL("http://www.csc.liv.ac.uk/~valli/modules.xsd"); SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); Schema schema = schemaFactory.newSchema(schemaFile); Validator validator = schema.newValidator(); DOMResult result = new DOMResult(); try { validator.validate(source, result); System.out.println("is valid"); } catch (SAXException e) { System.out.println("not valid because " + e.getLocalizedMessage()); } }
Но это возвращает ошибку при высказывании: Исключение в потоке "основной" java.lang. IllegalArgumentException: Никакой SchemaFactory, который реализует язык схемы, указанный: http://www.w3.org/2001/XMLSchema - экземпляр мог быть загружен
Действительно ли это - проблема с моим кодом или с фактическим xsd файлом?
Эта ошибка означает, что в установленной вами Java нет классов, которые могут разбирать файлы XMLSchema, так что это не проблема со схемой или вашим кодом.
Я уверен, что последние версии JRE имеют соответствующие классы по умолчанию, поэтому вы можете предоставить нам вывод java -version
?
Обновление:
Вы используете неправильную строку XMLContants. Вам нужно: XMLConstants.W3C_XML_SCHEMA_NS_URI