Java 根据XSD验证完整的XML
我想根据XSD完全验证XML,这意味着我希望文件从引发异常的同一点继续验证 这是我的代码:Java 根据XSD验证完整的XML,java,xml,xml-parsing,xsd,Java,Xml,Xml Parsing,Xsd,我想根据XSD完全验证XML,这意味着我希望文件从引发异常的同一点继续验证 这是我的代码: public void validate(File file) { try { Source xmlFile = new StreamSource(file); try { System.out.println("Processing : " + file.getAbsolutePath()); System.o
public void validate(File file) {
try {
Source xmlFile = new StreamSource(file);
try {
System.out.println("Processing : " + file.getAbsolutePath());
System.out.println(validator);
validator.validate(xmlFile);
// stringBuffer.append(" is valid");
} catch (SAXException e) {
fileWriter.write("\n\n\n" + file.getAbsolutePath());
System.out.println(xmlFile.getSystemId() + " is NOT valid");
System.out.println("Reason: " + e.getLocalizedMessage());
fileWriter.write("\nReason: " + e.getLocalizedMessage());
if (e instanceof SAXParseException) {
fileWriter.write(" (Line : "
+ ((SAXParseException) e).getLineNumber()
+ ", Col : "
+ ((SAXParseException) e).getColumnNumber() + ")");
}
fileWriter.flush();
validate(file);
}
} catch (Exception exception) {
exception.printStackTrace(System.out);
}
}
根据这个代码段,在一个异常之后,代码返回错误并停止进一步验证XML。。但是,有没有办法针对XSD获取XML的所有错误?简而言之,从引发异常的游标继续验证。
有出路吗
谢谢 默认错误处理程序的行为是通过抛出
SAXException
在遇到第一个致命错误后停止处理。要改变这种行为,请实现您自己的行为,并向验证器注册它
这是一个将异常转储到标准输出的示例,但是您可能希望用更智能的报告机制来替换它
class CustomErrorHandler implements ErrorHandler {
public void fatalError(SAXParseException e) throws SAXException {
System.out.println(e.toString());
}
public void error( SAXParseException e ) throws SAXException {
System.out.println(e.toString());
}
public void warning( SAXParseException e ) throws SAXException {
System.out.println(e.toString());
}
}
然后:
validator.setErrorHandler(new CustomErrorHandler());
无法根据XSL文件验证XML。您可以根据模式(XMLSchema、DTD、RelaxNG等)进行验证,但不能根据样式表进行验证。