我的输入是格式良好的XML文档和相应的XML Schema文档.我想要做的是确定XML文档中的位置,导致它无法验证XML Schema文档.我无法弄清楚如何使用Java中的标准验证方法来做到这一点:
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(... /* the .xsd source */);
Validator validator = schema.newValidator();
DocumentBuilderFactory ...
DocumentBuilder ...
Document document = DocumentBuilder.parse(... /* the .xml source */);
try {
validator.validate(new DOMSource(document));
...
} catch (SAXParseException e) {
...
}
Run Code Online (Sandbox Code Playgroud)
我已经玩弄了至少从SAXParseException获取行号和列号的想法,但是在验证错误时它们总是设置为-1,-1.
您不会以这种方式报告架构验证错误。如果你确实想要行和列信息,你需要设置一个错误处理程序,即
try {
validator.setErrorHandler(handler);
validator.validate(...);
} catch (SAXParseException e) {
// Use handler info, or log it in handler
}
Run Code Online (Sandbox Code Playgroud)
这是您需要实现的接口:ErrorHandler
归档时间: |
|
查看次数: |
1512 次 |
最近记录: |