java和xml小问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:50:19
大哥,大姐们能给我解释一下,SAX分析XML文件有什么用??有什么功能?真是不好理解啊!谢谢.

其实解析XML有两种方式,一种叫DOM,一种就是SAX。
其中DOM的解析方式是一次性把XML读入到内存中,然后按照XML的结构在内存中生成一颗DOM树,这样你可以从XML的根节点开始访问XML的每一个节点。但是种方式因为要把XML一次性全部读入内存,所以内存的消耗是很大的。如果XML很大的话,不建议使用这种方式。
SAX比较灵活,它是一个标签,一个标签的解析,每解析一个标签的时候就会调用相应的一个函数。已经解析过的标签,就被程序丢掉了(除非用你自己的方式把它记下来)。给你举个例子,比如有这样一个xml文件:
<年级 名称=“一年级”>
<班级 名称=“一班”>
<班主任 名称=“XXX”/>
</班级>
<班级 名称=“二班”>
<班主任 姓名=“YYY”>
</班级>
</年级>
对于这个XML,SAX的解析方式是,首先遇到"年级"标签,然后调用函数startElement(),在这个方法里,你可以读取“年级”标签的名称是“一年级”,然后往下执行,读到了班级,这个时候程序会再次自动的触发startElement()方法,然后得到班级的名称,这个时候已经读取的“年级”的信息就不存在了。后面的标签以此类推。
当读到</班级>标签的时候,程序会自动出发endElement()方法。当然读到</年级>的时候也会触发这个方法。
总的来说,程序对XML每做一次进一步的操作,就会触发一个相应的函数,触发的这个函数叫做回调函数(其实不知道它是回调函数也没关系)。个人感觉整个解析的过程就类似于对栈的操作。
解释的很粗浅,因为如果真正要把这个问题说明白很麻烦,不过希望这个解释能给你帮助 :)

XML 是一种数据存储格式。它没有定义保存什么数据,也没有定义数据的格式。XML 只是定义了标记和这些标记的属性。格式良好的 XML 标记看起来像这样:<name>Jack</name>