小编典典

针对XSD架构的Java XML验证

java

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文件有问题?


阅读 215

收藏
2020-11-19

共1个答案

小编典典

该错误意味着您安装的Java没有任何可解析XMLSchema文件的类,因此该模式或代码不是问题。

我敢肯定,最近的JRE默认情况下具有适当的类,因此您可以获取给我们的输出java -version吗?


更新:

您使用了错误的XMLContants字符串。你要:XMLConstants.W3C_XML_SCHEMA_NS_URI

2020-11-19