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()); } }
但是,这将返回一条错误消息:线程“ main”中的异常java.lang.IllegalArgumentException:无法加载实现由http://www.w3.org/2001/XMLSchema -instance 指定的模式语言的SchemaFactory。
这是我的代码还是实际的xsd文件有问题?
该错误意味着您安装的Java没有任何可解析XMLSchema文件的类,因此该模式或代码不是问题。
我敢肯定,最近的JRE默认情况下具有适当的类,因此您可以获取给我们的输出java -version吗?
java -version
更新:
您使用了错误的XMLContants字符串。你要:XMLConstants.W3C_XML_SCHEMA_NS_URI
XMLConstants.W3C_XML_SCHEMA_NS_URI