您的位置:首页 > 其它

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 为例

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 小苗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: