dom4j如何实现定制错误处理?
在JAXP解析时,当遇到解析错误的话,可以通过org.xml.sax包中的SAXPraseException来获得导致错误的文本结束位置的行号,列号,以及系统标识符等信息,来实现定制的错误处理,可是在dom4j有什么异常类呢,该如何实现定制错误处理呢
[解决办法]
使用dom4j的org.dom4j.util.XMLErrorHandler,给org.dom4j.io.SAXReader的setErrorHandler用上,你可以Override下XMLErrorHandler内的方法定制输出,当然,其实也是需要SAXPraseException来获得导致错误信息的。。。。
不知道是不是你想要的。。。附一段使用dom4j验证并解析xml的代码:
private static void validateByDom4j(){
File file1 = new File("aaa.xml");
if (file1.exists()) {
SAXReader reader = new SAXReader(true);
try {
reader.setFeature(
"http://apache.org/xml/features/validation/schema", true);
reader.setProperty(
"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
"aaa.xsd");
XMLErrorHandler errHandler = new XMLErrorHandler(){
@Override
public void error (SAXParseException exception){
super.error(exception);
System.out.println(exception.getSystemId() + "文档的第"
+exception.getLineNumber()
+"行,第"+exception.getColumnNumber()
+"列发生有效性错误,错误信息是:"+exception.getMessage());
}
};
reader.setErrorHandler(errHandler);
Document doc = reader.read(file1);
if( errHandler.getErrors().hasContent() ){
System.out.println("解析失败!");
doc.clearContent();
doc = null;
return ;
}
System.out.println("解析成功!");
System.out.println(doc.asXML());
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("can not find xml file:"
+ file1.getAbsolutePath());
}
}