针对 XSD 模式的 Java XML 验证

标签 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());
    }
}

但这会返回一个错误信息: 线程“main”中的异常 java.lang.IllegalArgumentException:没有实现由以下内容指定的模式语言的 SchemaFactory:http://www.w3.org/2001/XMLSchema -可以加载实例

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

最佳答案

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

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


更新:

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

关于针对 XSD 模式的 Java XML 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396903/

相关文章:

java - 如何调用 Stack 中所有对象的 toString() 方法?

java - XML 到 JSON 的转换会丢失一些 XML 标签

xml - hibernate注释类的通用定义

sql-server - SQL Server XML local-name() 异常

php - 如何在 Eclipse Juno 4.2.1 中禁用 PHP 文件的 HTML 验证?

java - 多线程应用程序连续失败后如何将主机名添加到阻止列表?

java - 如何将HttpServletRequest转换为对应的HttpClient对象

java - 我的 Android 项目在 Enum 和 string.xml 之间有重复的声明

jquery - 网址验证。 ng 模式不起作用

javascript - 电子邮件验证提示不正确