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:无法加载实现http://www.w3.org/2001/XMLSchema -instance指定的模式语言的SchemaFactory
这是我的代码还是实际的xsd文件有问题?
最佳答案
该错误意味着您安装的Java没有任何可解析XMLSchema文件的类,因此该模式或代码不是问题。
我敢肯定,最近的JRE默认情况下具有适当的类,因此您可以获取java -version
的输出吗?
更新:
您使用了错误的XMLContants字符串。您想要:XMLConstants.W3C_XML_SCHEMA_NS_URI