zoukankan      html  css  js  c++  java
  • 解决dom4j加载xml文件性能慢的问题

    在代码中使用:

    1:  DocumentHelper.parseText

    2:

    SAXReader reader = new SAXReader();

    Document extdocument = reader.read(new File(extMapperPackagePath));

    经过检测每次加载3KB文件的xml耗时1秒钟。性能极慢。经过很久终于找到原因,原来是验证xmlDTD文件导致的。

    解决办法:跳过DTD验证。

    步骤1:创建类

    package com.my.common.generator.myplugins;
    
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    
    import org.xml.sax.EntityResolver;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    
    public class IgnoreDTDEntityResolver implements EntityResolver {
    
        @Override
        public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
    
            return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
        }
    
    }
    View Code

    步骤2:忽略验证

    SAXReader reader = new SAXReader(false);
    // 忽略DTD,降低延迟
    reader.setEntityResolver(new IgnoreDTDEntityResolver());

    Document extdocument = reader.read(new File(extMapperPackagePath));

    另外注意:

    DocumentHelper.parseText用以下代码代替

    SAXReader reader = new SAXReader(false);
    // 忽略DTD,降低延迟
    reader.setEntityResolver(new IgnoreDTDEntityResolver());

    Document extdocument = reader.read(new InputSource(new StringReader(sqlMap.toString())))

    说明:多次读取xml时可以复用SAXReader。

  • 相关阅读:
    JS实现类似CAD的获取点
    ObjectARX填充
    backbone
    (转)Log4net使用详解
    Log4Net介绍
    (转)Log4net使用详解2
    ASP.NET:利用RegexStringValidator验证字符串格式
    ashx文件的使用
    编译执行和解释执行的区别
    利用 Application_Error 捕获所有异常 .
  • 原文地址:https://www.cnblogs.com/wulm/p/9863104.html
Copyright © 2011-2022 走看看