一段用jdom解析XML的代码,最近莫名其妙抛异常了。
看一下异常完全是八竿子打不上的,ConnectException, 莫不成解析XML还需要联网?
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
.......
随后猜测问题可能出在这里,xml有引用一个外部dtd定义:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE properties SYSTEM "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
JDOM在解析的过程中默认会读取xml文件中的dtd,所以如果是url格式的就会产生外网访问。
上网找了一圈,最终得到真传:(就是下面红色标注的这么一行,加上去就ok,无需访问外网)
// 获取SAXBuilder
SAXBuilder builder = new SAXBuilder();
builder.setFeature("http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd", false);