如何提高DOM4j读取xml的速度?
import java.io.File;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XPP3Reader;
import org.dom4j.io.XPPReader;
public class TransformErrorHandle {
public static void main(String[] args) {
String filePath = "D:\\TransFormTest ";
String fileName = "test.xml ";
org.dom4j.Document doc = null;
try {
doc = new SAXReader().read(new File(filePath,fileName));
String timeOut = doc
.selectSingleNode( "//B2BI/B2BI_HEADER/TIME_OUT ").getText();
String tranType = doc.selectSingleNode(
"//B2BI/B2BI_HEADER/TRAN_TYPE ").getText();
tempTime = System.currentTimeMillis();
String msgIn = doc.selectSingleNode(
"//B2BI/B2BI_BODY//MSG_IN ").getText();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的程序如上所示,经过我多次测试发现,DOM4j在解析xml的时候有两处比较耗时:
1,装载xml文件的时doc = new SAXReader().read(new File(filePath,fileName))
2,获取第一个元素时
请问各位大侠,有没有什么好一点的办法把这两处的时间缩短一点!?
[解决办法]
1,减小XML。
2,//B2BI/B2BI_HEADER/TIME_OUT,如果是从根元素开始的,不要用//,而应该用/
[解决办法]
1,装载xml文件的时doc = new SAXReader().read(new File(filePath,fileName))
因为后来的执行都是在内存中执行的,再加上访问文件的消耗,所以,提速的方法只能是缩小xml文件。当然,清理硬盘碎片等操作能在特定环境下有用
2,获取第一个元素时
第一次获取元素时,给所有结点建立索引。提速的方法和上类似,缩小xml文件
[解决办法]
因为dom给他建索引了,所以慢了
我没表达清楚