java解析XML性能对比
2009-09-29 15:04
393 查看
解析XML可能是我们在开发中经常要面临的问题,这里我们只谈Java,而且只涉及三个工具dom,jdom,dom4j,主要代码来自己网络,稍做整理,以备日后使用。
关于他们各自的概念,就不必多说了,Google一下,就OK了。
据我测试的结果,初步的结论是:
· 如果是解析结构非常简单,而且文件体积特别小的XML,推荐使用DOM;
· 结构相对比较复杂,文件体积较大的,推荐使用JDOM;
· 结构特别复杂,体积庞大(比如,超过2M),推荐使用DOM4J;
· 简单的说DOM4J效率高是片面的。
以下是代码:
一、MyXMLReaderDOM
ActionScript/Java代码
package test;
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class MyXMLReaderDOM {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("test.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i = 0; i < nl.getLength(); i++) {
System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("-车主地址:"+ doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)+ "毫秒");
}
}
二、MyXMLReaderJDOM
ActionScript/Java代码
package test;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReaderJDOM {
@SuppressWarnings({"unchecked"})
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("test.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());
System.out.println("-车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)+ "毫秒");
}
}
三、MyXMLReaderDOM4J
ActionScript/Java代码
package test;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class MyXMLReaderDOM4J {
@SuppressWarnings({"unchecked"})
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("test.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:" + foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");
}
}
四、运行记录
文件大小:2.85 MB
运行时间:52859毫秒 //dom4j
运行时间:3250毫秒 //jdom
运行时间:不敢尝试 //dom
关于他们各自的概念,就不必多说了,Google一下,就OK了。
据我测试的结果,初步的结论是:
· 如果是解析结构非常简单,而且文件体积特别小的XML,推荐使用DOM;
· 结构相对比较复杂,文件体积较大的,推荐使用JDOM;
· 结构特别复杂,体积庞大(比如,超过2M),推荐使用DOM4J;
· 简单的说DOM4J效率高是片面的。
以下是代码:
一、MyXMLReaderDOM
ActionScript/Java代码
package test;
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class MyXMLReaderDOM {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("test.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i = 0; i < nl.getLength(); i++) {
System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("-车主地址:"+ doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)+ "毫秒");
}
}
二、MyXMLReaderJDOM
ActionScript/Java代码
package test;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReaderJDOM {
@SuppressWarnings({"unchecked"})
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("test.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());
System.out.println("-车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)+ "毫秒");
}
}
三、MyXMLReaderDOM4J
ActionScript/Java代码
package test;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class MyXMLReaderDOM4J {
@SuppressWarnings({"unchecked"})
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("test.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:" + foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");
}
}
四、运行记录
文件大小:2.85 MB
运行时间:52859毫秒 //dom4j
运行时间:3250毫秒 //jdom
运行时间:不敢尝试 //dom
相关文章推荐
- 浅谈XML 解析技术性能对比分析之 解析XML
- JAVA通过XPath解析XML性能比较(原创)
- JAVA通过XPath解析XML性能比较
- 浅谈XML 解析技术性能对比分析之 生成XML
- Java中XML文档解析技术:性能比较
- JAVA通过XPath解析XML性能比较
- java-工具-XML解析工具对比
- JAVA通过XPath解析XML性能比较
- JAVA通过XPath解析XML性能比较
- Java中四种XML解析技术对比(Dom、Sax、Dom4j JDom)
- JAVA通过XPath解析XML性能比较
- XML基础+Java解析XML +几种解析方式的性能比较
- XML两种解析方式:SAX和DOM性能对比
- XML基础+Java解析XML +几种解析方式的性能比较
- java解析xml原理方法对比示例,XML基础
- JAVA通过XPath解析XML性能比较详解
- java中处理xml数据性能不能大幅提高的根本原因 - 继续追寻高性能xml解析方法
- dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
- Java使用Dom解析xml学习记录
- Java几款性能分析工具的对比