关于Sax解析的一点疑问

问题描述

现在需要解析一个xml文档,文档的大小为200M左右,现在不知道选用哪种方式了是用Dom还是sax呢?还有到底什么时候选用dom什么时候选用sax,文件大小在多少左右的时候选用sax,多少的时候选用dom呢?

解决方案

解决方案二:
当然是用SAX如果用Dom,需要的内存太大,DOM是一次性加载整个XML文件。
解决方案三:
200M的文档应该用SAX
解决方案四:
小的用dom大的用saxdom直接一次性把文档加载到内存了sax是事件驱动的还是比较好用的
解决方案五:
如果使用JDK1.6,还可以使用Stax。个人觉得比SAX好用多了
解决方案六:
SAX解析吧,200M,太大了。DOM一次加载估计等的人就会崩溃了,如果反问量大的话,是很不理想一种。
解决方案七:
sax解析大数据量的xml文件,我觉得超过5M就不要考虑dom解析了。dom主要用于生成xml或者修改xml文件。也可以使用基于流的stax来解析。但是我试验过,stax解析速度比sax还是要慢一点点。一般不是特别大的文件生成与读取都可以使用dom4j来完成就行了。

时间: 2024-08-01 14:31:40

关于Sax解析的一点疑问的相关文章

汇编语言-汇编MOV的一点疑问!!!

问题描述 汇编MOV的一点疑问!!! DATA SEGMENT USE16 MES1 DB 'Please input:',0AH,0DH,'$' SD DB ? DATA ENDS 然后 MOV AH,1 INT 21H MOV SD,AL 然后就对SD进行操作了 想问下MOV的目的操作数可以是变量(SD)吗??不是只能是寄存器和存储器吗? 解决方案 MOV AH,1 INT 21H 是自动转入中断子程序的入口 通过上面两条指令,会把输入或者读取的字符放到AL中,所以是MOV SD,AL 解决

string-对getBytes()的一点疑问

问题描述 对getBytes()的一点疑问 我输入的程序是这样的 byte d[]=""你我他"".getBytes(); byte b[]=""hahaha"".getBytes(); System.out.println(""数组d的长度是(一个汉字占两个字节):""+d.length+""个字节""); String s=new String

利用SAX解析读取XML文件

xml     这是我的第一个BLOG,今天在看<J2EE应用开发详解>一书,书中讲到XML编程,于是就按照书中的步骤自己测试了起来,可是怎么测试都不成功,后来自己查看了一遍源码,发现在读取XML文件的位置时有误,于是进行了更改,还真行了,心中涌出一中成就感,现将源码贴出来与给位分享: 使用XML文件连接MYSQL数据库,database.conf.xml文件如下: <database-conf><datasource> <driver>com.mysql.

[JAVA100例]069、使用SAX解析XML

ReadXmlDemo.java import java.io.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; public class ReadXmlDemo extends DefaultHandler { public static void main(String[] arguments) { if (arguments.length > 0){ ReadXmlDemo

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.6.1 使用SAX解析器

3.6.1 使用SAX解析器 SAX解析器在解析XML输入数据的各个组成部分时会报告事件,但不会以任何方式存储文档,而是由事件处理器建立相应的数据结构.实际上,DOM解析器是在SAX解析器的基础上构建的,它在接收到解析器事件时构建DOM树. 在使用SAX解析器时,需要一个处理器来为各种解析器事件定义事件动作.ContentHandler接口定义了若干个在解析文档时解析器会调用的回调方法.下面是最重要的几个: startElement和endElement在每当遇到起始或终止标签时调用. char

重写-关于覆盖和返回的一点疑问

问题描述 关于覆盖和返回的一点疑问 public class TbShangpininfo { private String spmc; public String getSpmc(){ return spmc; } public String toString() { return getSpmc(); } } TbShangpininfo类重写了toString()方法, JComboBox sp=new JComboBox(); TbShangpininfo info=new TbShan

c语言-关于C语言编译C51单片机程序的一点疑问

问题描述 关于C语言编译C51单片机程序的一点疑问 1.为什么两段不相干的代码会互相影响 在主程序里有一段点亮发光二极管的代码,和一段计数器计数并在数码管上显示的代码.同时工作时,二极管正常点亮,数码管几秒才点亮一回,而且十位显示是闪烁一下就不显示了2.数码管显示时,位选和段选顺序不能改变吗?按照书上的方法是先段选再位选,但是点亮的数码管是本来不应该点亮的,段选和位选顺序换了之后就能正常显示了 解决方案 问题1)你所谓的同时工作是指led亮的同时数码管也在显示,是这样的吗?单片机跑的程序都是单线

局部变量-关于java内存垃圾回收的一点疑问

问题描述 关于java内存垃圾回收的一点疑问 class test{ void m(){ Object obj[]=new Object[1]; Object o = new Object(); obj[0]=o; o = null;//用不着 } } 很常见的一个例子,说最后Object对象都没有被释放,因为obj[0]还引用这个对象. 我的疑问是,既然局部变量在方法运行完,引用会被销毁,也就是说o不用被置为null,也会堆内存的Object对象也会被回收(符合回收的条件,不一定立即GC),那

SAX解析XML文件

就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快.SAX则是基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种"推"的解析方式:这种解析方法速度快.占用内存少,但是它需要应用程序自己处理