使用dom4j解析XML文件出现:org.dom4j.DocumentException: Connection reset Nested exception: Connection reset

1.出现的问题

最近在使用dom4j解析XML文件出现:org.dom4j.DocumentException: Connection reset Nested exception: Connection reset
在这里插入图片描述

2.出现问题详情

2.1解析的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">```
<configuration>
    <properties resource="jdbc.properties">
    </properties>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="url" value="jdbc:mysql://localhost:3306/mybatistest"/>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers >
        <mapper resource="com/sofwin/dao/IUserDao.xml"/>
    </mappers>
</configuration>

2.2解析xml的代码

	//mybatis.xml文件是放在resources目录之下,是可以读取到的
        InputStream resourceAsStream = test.class.getClassLoader().getResourceAsStream("mybatis.xml");
        System.out.println("resourceAsStream:"+resourceAsStream);
        SAXReader reader=new SAXReader();
        Document document= null;
        try {
        //出现错误的位置:Connection reset Nested exception: Connection reset
            document = reader.read(resourceAsStream);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        Element rootElement = document.getRootElement();
        List<Element> propertyElements = rootElement.selectNodes("//property");
        propertyElements.stream().forEach(l->{
            System.out.println(l.attributeValue("name"));
            System.out.println(l.attributeValue("value"));
        });

2.3出现的原因

执行:document = reader.read(resourceAsStream);的时候出现错误:Connection reset Nested exception: Connection reset.

  • 是网络的问题.由于DOCTYPE的链接不一样形成的.
  • 使用了saxreader解析器的时候,会自动解析DOCTYPE里面的内容.若是链接不上网络,则会报链接超时的异常.

2.4解决的措施

(不加载dtd文件,false); 就不会去解析DOCTYPE了
mybatis.xml文件修改为:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//false"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

其中false就是不加载dtd文件。

2.5其他的解决措施

SAXReader reader = new  SAXReader();
reader.setFeature("http://mybatis.org/dtd/mybatis-3-config.dtd", false);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值