dom4j 读取文件异常 org.dom4j.DocumentException: Read timed out Nested exception: Read timed out

本文介绍了一种在使用SAXReader读取XML文件时遇到的DocumentException异常,并详细解释了异常产生的原因,即SAXReader在解析XML文件时尝试加载外部DTD导致的问题。文章提供了通过设置SAXReader特性来避免加载外部DTD,进而解决该异常的有效方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先楼主先贴出楼主出现异常的代码吧
	public void read(String fileName) throws DocumentException, SAXException {
		SAXReader reader = new SAXReader();
		this.document = reader.read(new File(fileName));
	}

这段代码是没有问题的,但是为什么会出现标题中的异常呢

原因是因为,SAXReader在读取文件的时候会,解析当中的一些uri的合法性,

reader获取到传过来的文件,的时候会对文件中的一些uri'进行校验,但是由于一些不知名的原因例如,网络,例如地址使得reader在解析是超时,或者失败

从而抛出标题中的异常

解决的方法也很简单,那么就是让reader忽略当中的uri

		SAXReader reader = new SAXReader();
		// 不扫描dtd文件
		reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
		this.document = reader.read(new File(fileName));

加上

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值