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

07-24 15:15