XML解析的四种方式
2014-04-05 20:54
218 查看
1. 首先介绍XML的四种解析方式
①DOM (Document Object Model) 文档对象模型
②SAX (Simple API for XML)
③JDOM (Java-based Document Object Model)
④DOM4J (Document Object Model for java)
2.以下以代码为例进行说明
首先以下的所有解析xml文件以 person.xml 为例
View Code
比较:
1.JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出
2.SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,
但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中).
|--> 如果是做手机方面的可以考虑,因为手机很难扩容
3.DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,
例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
|--> 如果是考虑服务器方面的可以考虑,服务器很容易扩容
本人是一个JAVA爱好者,欢迎交流
------By 小苗
①DOM (Document Object Model) 文档对象模型
②SAX (Simple API for XML)
③JDOM (Java-based Document Object Model)
④DOM4J (Document Object Model for java)
2.以下以代码为例进行说明
首先以下的所有解析xml文件以 person.xml 为例
package com.baba.miao.xml; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.baba.miao.vo.Teacher; public class Dom4jParseDemo { public static void main(String[] args) throws DocumentException { // 创建解析器 SAXReader saxReader = new SAXReader(); InputStream is = Thread.currentThread().getContextClassLoader() .getResourceAsStream("person.xml"); // 开始解析,并返回Document Document docu = saxReader.read(is); Element root = docu.getRootElement(); // 获取根元素的所有子元素 Iterator<Element> iters = root.elementIterator(); List<Teacher> list = new ArrayList<Teacher>(); while (iters.hasNext()) { Teacher t = new Teacher(); Element e = iters.next(); t.setId(Integer.parseInt(e.attributeValue("id"))); t.setName(e.elementText("name")); t.setDesc(e.elementText("desc")); list.add(t); } System.out.println(list); } }
View Code
比较:
1.JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出
2.SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,
但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中).
|--> 如果是做手机方面的可以考虑,因为手机很难扩容
3.DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,
例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
|--> 如果是考虑服务器方面的可以考虑,服务器很容易扩容
本人是一个JAVA爱好者,欢迎交流
------By 小苗
相关文章推荐
- 递归系列---------斐波拉契数列递归解法
- 浅谈设计原则OCP
- jdk动态代理
- 二分查找法的实现和应用汇总
- hdu1061 Rightmost Digit
- KMP算法以及串给自己的一点回忆
- 微软编程一小时比赛--题目1 : Arithmetic Expression
- 矩阵的应用(持续更新中)
- OC语言自学《九》---- OC(面向对象)
- Fedora20视频播放器安装
- 刷过算法题汇总
- Android 在非Activity调用getResources()方法
- 一、用户管理类命令
- cxgrid的过滤%x%问题【备查】
- 后盾网 thinkphp 学习笔记
- 由不同编号生成策略产生的多线程问题及解决
- AppStore新应用上传指南
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_
- NSString 和 NSURL的互相转换
- 程序员的回归式进化