转载自 http://www.it.com.cn/f/edu/053/27/93819.htm

在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为)。

预 备

测试环境:

AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在 Debug 模式下测试。

XML 文件格式如下:

<?xml version="1.0" encoding="GB2312"?>

<RESULT>

<VALUE>

<NO>A1234</NO>

<ADDR>四川省XX县XX镇XX路X段XX号</ADDR>

</VALUE>

<VALUE>

<NO>B1234</NO>

<ADDR>四川省XX市XX乡XX村XX组</ADDR>

</VALUE>

</RESULT>

测试方法:

采用 JSP 端调用Bean(至于为什么采用JSP来调用,请参考:http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx),让每一种方案分别解析10K、100K、1000K、10000K的 XML 文件,计算其消耗时间(单位:毫秒)。

JSP 文件:

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page import="com.test.*"%>

<html>

<body>

<%

String args[]={""};

MyXMLReader.main(args);

%>

</body>

</html>

测 试

首先出场的是 DOM(JAXP Crimson 解析器)

DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。

另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 SAX。

Bean文件:

package com.test;

import java.io.*;

import

java四种xml_Java中四种XML解析技术相关推荐

  1. Java中四种XML解析技术之不完全测试

    Java中四种XML解析技术之不完全测试 <script language=javascript src=""></script> 在平时工作中,难免会遇到 ...

  2. 【JAVA秘籍心法篇-Spring】Spring XML解析源码详解

    [JAVA秘籍心法篇-Spring]Spring XML解析源码详解 所谓天下武功,无坚不摧,唯快不破.但有又太极拳法以快制慢,以柔克刚.武功外式有拳打脚踢,刀剑棍棒,又有内功易筋经九阳神功.所有外功 ...

  3. XML 解析技术:DOM4j

    前言: 我一直以来就坚信一句话:不积跬步无以至千里,不积小流无以成江海.可能很多人对一些基础概念会选择性忽略,但往往基础和知识理解深度决定你的上限. 今天给大家带来一个对框架以及容器源码理解提升的知识 ...

  4. Spring OXM- 漫谈XML解析技术

    概述 XML解析技术漫谈 认识XML XMl的处理技术 概述 我们先从XML各种解析技术的发展历程谈起,并介绍一些主流 O/X Mapping组件的使用方法,比如XStream.Castor.JiBX ...

  5. XML解析技术,DOM和SAX以及STAX的区别

    XML解析技术 DOM技术:文档对象模型,需要将整个XML加入内存才能解析,占用内存比较多 SAX技术:一边加载,一边解析,一边释放内存,比较节省内存,基于推模式 STAX技术:一种至于流的技术,和S ...

  6. java乘法表_Java中四种9*9乘法表的实现方式(附代码)

    前言: 初学java,实现99乘法表是必学必会的内容. 需求 : 分别写出上下左右,对应四个角的乘法表. 思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式. 代码如下: publi ...

  7. java B锁_Java中15种锁的介绍

    原标题:Java中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 1.公平锁 / 非公平锁 2.可重入锁 / 不可重入锁 3.独享 ...

  8. Java Web开发Tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  9. java默认值_Java中八种基本数据类型的默认值

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...

最新文章

  1. 如何从ATS获取客户端平均响应时间(单位,毫秒)?
  2. Angular应用中配置全局路径映射
  3. day1-字符串拼接、表达式、break和continue
  4. Kubernetes的yaml文件中command的使用
  5. HTTP的301与302
  6. multipartfile前端怎么传_前端那些事如何更好管理 Api 接口
  7. 典型用户分析及用户场景分析
  8. 国服服务器_《Minecraft我的世界》第三方服务器的基本储备
  9. python的ols_【量化工具】OLS在python中的四种实现方式
  10. python抓取汤不热视频_你们想要的 Tumblr 爬虫
  11. 8分钟搞清波士顿动力进化史 | 视频
  12. 浅谈内联元素inline
  13. LeetCode 240. Search a 2D Matrix II
  14. mysql基础之数据库备份和恢复的基础知识
  15. C# 读取Oracle数据库数据
  16. 照片一寸改成二寸,并压缩体积KB的工具
  17. 校园网如何更改ip地址
  18. C#串口通信——协议格式
  19. OSPF路由协议总结(一)
  20. 自动化测试全套资料都在这里了,请查收(吐血整理)

热门文章

  1. where oracle用法,Oracle查询语句 select * from where 用法
  2. mysql数据库查询缓存_MySQL查询缓存与数据库管理
  3. 平面设计中的网格系统pdf_全面掌握版式设计中的网格系统
  4. 男女洗澡前后区别,太形象了!
  5. 在线分析|在线做随机森林分析
  6. 美国俄克拉荷马大学秦玮课题组招聘启事
  7. Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条
  8. R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数
  9. R语言使用ggplot2包使用geom_violin函数绘制小提琴图(水平小提琴图、垂直小提琴图、边缘不截断小提琴图)实战
  10. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换