因为要弄个开发自用的小工具,涉及到了xml的解析,之前一切都正常。

dom4j

但是今天在运行的时候发现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);
你可能感兴趣的内容
0条评论

selfly

交流QQ群:32261424
Owner