解決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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM