我找到了很多像这样的例子:
public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException | SAXException e) {
System.out.println("Exception: "+e.getMessage());
return false;
}
return true;
}
}
展示如何通过xsd验证xml文件,我发现用dtd文件做同样的事情并不容易。我有一堆xml文件使用不同类型的dtd(dtd文件在另一个位置),格式为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name SYSTEM "name.dtd">
<name>
.
.
.
</name>
我应该如何使用dtd(传递本地xml和dtd路径)验证,与上面的示例类似?
答案 0 :(得分:0)
如果您使用SAX解析器,您可能需要查看org.xml.sax.EntityResolver
接口。您创建了一个实现此接口的类,并在.setEntityResolver(yourResolver)
上调用XMLReader
。如果DTD可用,大多数SAX解析器将自动验证您的XML,否则您可能必须将validation
功能设置为true
。