因为要弄个开发自用的小工具,涉及到了xml的解析,之前一切都正常。
但是今天在运行的时候发现dom4j总是抛出连接超时的异常:
org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection timed out: connect at org.dom4j.io.SAXReader.read(SAXReader.java:484) at org.dom4j.io.SAXReader.read(SAXReader.java:264)
工具中本身没有网络操作,那应该就是dom4j的问题了,加载xml代码如下:
SAXReader reader = new SAXReader(); Document document = reader.read(xmlFile);
查看xml文件,发现头部有验证的dtd文件:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
直接输入浏览器里访问,发现确实是访问不了,
网上有说可以把dtd文件弄到本地,弄个apache啥的把这个文件放进去,这也太麻烦了吧!
查询资料后发现,只需要把dom4j的这个验证功能去掉就可以了,代码如下:
SAXReader reader = new SAXReader(); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); Document document = reader.read(xmlFile);