Dom4j读取XML文件时遇到的一个问题(关于DTD)

最近做一个小项目,要用到Dom4j对XML文件进行读取,获得数据库配置信息,XML文件如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<DBConfig brief="数据库连接的相关配置" name="DB-CONFIG">
<DB_CLASS_NAME>com.microsoft.sqlserver.jdbc.SQLServerDriver</DB_CLASS_NAME>
<DB_URL>JDBC:microsoft:sqlserver://localhost:1433;DatabaseName=CityCRM</DB_URL>
<DB_USER>sa</DB_USER>
<DB_PWD>123456</DB_PWD>
</DBConfig>

利用Dom4j读取XML代码如下:

Document doc=saxReader.read(new File(path));//path为XML文件路径
Element root=doc.getRootElement();
dbUrl=root.element("DB_URL").getText();
dbUser=root.element("DB_USER").getText();
dbPwd=root.element("DB_PWD").getText();

但是读取时,速度很慢,有时甚至读取超时,我不明白了,为什么这么几行XML读取这么慢?后来上网找资料,发现这方面资料也很少,不过还是让我找到了,原来慢的原因是因为这个

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
 
对于DTD,是对XML的格式约束,不明白的大家可以百度一下,这是引用的一个公共的外部文件,非本地文件 ,所以要连接网络读取,所以之所以超时,也就明了了,那要怎样解决?最简单的办法就是注释掉这个,但会有恼人的警告,估计很多码农会受不了吧,于是我继续百度,发现了一个解决办法,只要在代码 
SAXReader saxReader=new SAXReader();//这句之后加上下面这么两行,就可以了
saxReader.setValidation(false)//经测试,这一行不是必须的
 
saxReader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);//这一行是必须要有的

至此,问题解决~~~希望能够帮到一些需要的朋友。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值