首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

dom4j怎么实现定制异常处理

2013-09-04 
dom4j如何实现定制错误处理?在JAXP解析时,当遇到解析错误的话,可以通过org.xml.sax包中的SAXPraseExceptio

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


热点排行