Do not resolve DTD files when dom4j read xml file

本文介绍了一种使用dom4j解析XML文件时避免解析DTD的方法,通过自定义EntityResolver来提高读取速度并防止外部实体引发的问题。

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

"dom4j, dtd, EntityResolver, 未找到外部实体, 慢"

Using dom4j to read xml file, it always resolve external or internal DTDs, then it makes reading slow or raise exception. I've found a way to resolve this.

Reading codes:

        SAXReader saxReader = new SAXReader(false);
        NullEntityResolver resolver = new NullEntityResolver();
        saxReader.setEntityResolver(resolver);
        Document document = saxReader.read(xmlFileName);

EntityResolver codes:

class NullEntityResolver implements EntityResolver {
    static String emptyDtd = "";

    static ByteArrayInputStream byteIs = new ByteArrayInputStream(emptyDtd.getBytes());

    public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
        return new InputSource(byteIs);
    }
}

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值