针对XSD架构的Java XML验证

Bec*_*cky 8 java xml validation xsd

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个错误说明:线程"main"中的异常java.lang.IllegalArgumentException:没有实现以下指定的模式语言的SchemaFactory:http://www.w3.org/2001/XMLSchema -instance可以加载

这是我的代码或实际的xsd文件的问题?

bra*_*ter 16

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

我很确定最近的JRE默认有相应的类,所以你能得到我们的输出java -version吗?


更新:

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