dom4j解析xml-取消doctype中DTD验证设置

http://pengfeng.iteye.com/blog/819827

看到此问题相信很多朋友都知道是因为下载doctype中的dtd对xml进行验证时,网络不通所致,sqlmap中doctype定义如下:

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

但实际情况是很多时候程序运行的环境网络不一定和互联网是通的,而且像这样每次联网去下载dtd也会对程序的效率产生影响.于是,出现两种解决办法:

1、去掉xml文件中的doctype或者将doctype中指定的互联网dtd文件改为引用本地dtd文件

2、对dom4j的SAXReader进行设置,不去下载外部dtd文件来对xml进行验证

相信大部分同仁都不大会同意第一种办法,呵呵,我也不太赞同。于是开始寻找第二种方案的解决办法:

reader.setValidation(false);  
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

两行代码解决问题,关键是第二行

相关推荐