易截截图软件、单文件、免安装、纯绿色、仅160KB

Java与XML联合编程之SAX篇


SAX概念

SAX是Simple API for XML
的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。


DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM
树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内
存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事(比如在applet中)。这时候,一个较好的替代解决方法就是SAX。
SAX在概念上与DOM完全不同。首先,不同于DOM的文档驱动,它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程
也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。(如果你对Java新的代理事件模型比较清楚的话,就
会很容易理解这种机制了)
点击可放大

XMLReader接受XML文档,在读入XML文档的过程中就进行解析,也就是说读入文档的过程和解析的过程是同时进行的,这和DOM区别很大。解析开
始之前,需要向XMLReader注册一个ContentHandler,也就是相当于一个事件监听器,在ContentHandler中定义了很多方
法,比如startDocument(),它定制了当在解析过程中,遇到文档开始时应该处理的事情。当XMLReader读到合适的内容,就会抛出相应的
事件,并把这个事件的处理权代理给ContentHandler,调用其相应的方法进行响应。
这样泛泛的说来或许有些不容易理解,别急,后面的例子会让你明白SAX的解析过程。看看这个简单XML文件:

<POEM>
<AUTHOR>Ogden Nash</AUTHOR>
<TITLE>Fleas</TITLE>
<LINE>Adam</LINE>
</POEM>

XMLReader读到<POEM>标签时,就会调用ContentHandler.startElement()方法,并把标签名POEM
作为参数传递过去。在你实现的startElement()方法中需要做相应的动作,以处理当<POEM>出现时应该做的事情。各个事件随着
解析的过程(也就是文档读入的过程)一个个顺序的被抛出,相应的方法也会被顺序的调用,最后,当解析完成,方法都被调用后,对文档的处理也就完成了。下面
的这个表,列出了在解析上面的那个XML文件的时候,顺序被调用


相关文档:

解析Java类和对象的初始化过程

类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......

java me

著作权保护声明
Chinaitlab高度重视知识产权保护并遵守中国各项知识产权法律、法规和具有约束力规范性文件。根据法律、法规和规范性文件要求,Chinaitlab
制定了旨在保护知识产权权利人合法权益的措施和步骤,当著作权人和/或依法可以行使著作权的权利人(以下简称“权利人”)发现在本站网页的内容或下
&nbs ......

java面试题!句子按照单词反置!

遇到一个java编程面试题,当时没有写出来,回来仔细想了想,写出答案,一共以后参考!
要求:将字符串"I am a good student."转换成"student. good a am I"
java代码为:
public class Application
{
 private String s;
 public void setS(String s)
 {
  s=s;
 }
 public S ......

Java获取汉字全拼和首拼

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 将汉字转化为全拼
*/
public class CnToSpell {
private static Map<String, Integer> spellMap = null;
// 存放生僻字和其拼音的Map
private static Map<Characte ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号