http://auto.hi.com.cn/_private/auto_15-4.htm
http://tech.ccidnet.com/pub/article/c1114_a14631_p1.html
http://www.csdn.net/develop/article/15/15308.shtm
http://www.cn-java.com/target/news.php?news_id=2370
http://pandsen.icpcn.com/xrs/docs/doc7.htm
http://tech.ccidnet.com/pub/article/c1114_a14631_p1.html
http://www.csdn.net/develop/article/15/15308.shtm
http://www.cn-java.com/target/news.php?news_id=2370
http://pandsen.icpcn.com/xrs/docs/doc7.htm
解决方案 »
- OpenKM3.0分配和配置用户权限
- 有关spring的aop中 AfterAdvice.java (不传参数)获取servlet中application,或request的方法
- request.getParameter()问题
- 扩展Lucene的索引文件存储[原创]
- 关于页面上的图片显示问题
- 请问大虾们,这个问题的症结是什么啊,在线等?
- 谁有webshere Application server
- 我刚接触XML,对在JAVA里面应用解析XML很迷惑,请多指点.我怎么样才能把JAVA与XML结合起来?谢谢!
- 请问《J2EE核心模式》这本书哪里有下载的呀?
- SpringSecurity自定义拦截器把资源权限在数据库维护后,<sec:authorize>标签不可用
- 怎么把一个整型专成字符型??
- 视频教程愿意和大家分享!
们简单介绍一下MSXML是如何通过COM接口实现SAX功能的。首先需要注意的使SAX是
一个接口集合,它允许开发人员在自己的应用中通过这个接口集合来读取和分析
XML文档中的数据。SAX2是当前微软最新的API。
SAX最初是为Java编程语言设计的,并使用了Java的接口定义,因为Java语言
接口并不是语言中立的,所以各个厂商就需要建立自己的工具把SAX接口映射到它
们自己的特殊的语言上去。微软的SAX2给VB和VC提供了接口,当然它们都有自己的
接口集合映射到各自的语言和类型定义上去(比如ISAXContentHandler是VC的接口
,而IVBSAXContentHandler是VB的接口)。 能够通过一个简单的,快速的方法来
对XML文档进行处理,并且和DOM相比的话,它所占用的系统资源更少。我们知道,
当你通过DOM来操作一个XML文件的时候,DOM读取该文件,然后把它分割成单个的
对象(比如元素,属性和注释等等),然后在内存中创建一个关于该文档的树结构
。使用DOM的好处是你可以引用和操作每一个对象。但是为一个文档创建一个树结
构,尤其当文档尺寸很大的时候,需要大量的内存空间。
和DOM不同的是,SAX2是基于事件的,这意味着当它在一个XML文档中发现特殊
的符号的时候,它会产生相关的事件。SAX2的优点是当它读到XML文档中每一部分
内容的时候,就会产生一个事件,我们的应用程序就可以在这个事件中写入具体的
处理代码,然后解析器就移动到文档的下一段。因为SAX2以序列的形式处理文档,
它和DOM相比,对内存的需求很少。而且当SAX2找到需要的信息的时候,它能够停
止对当前文档的解析。因为SAX不需要在内存中建立整个文档的树结构,SAX和DOM
相比,可以被认为是一个轻量级的接口集合。
我们可以从另一个角度来理解SAX和DOM的区别,如果把它们认为是数据库的游
标的话,SAX就类似是只读(read-only)和前向(forward-only)游标,而DOM更象
是一个静态(static)的游标允许对记录进行遍历和更新。在开发数据库的时候,我
们都知道这两种游标都有自己的适用范围而且都是非常有用的,所以SAX和DOM的作
用也可以类似的进行这样的理解。SAX对XML进行处理的流程图如下所示:
SAX2和DOM相比的优点
当需要处理大的文件的时候,SAX对内存的需求很小,因为它并不会因为XML文
档尺寸的增加而增加对内存的需求。SAX允许你在任何时候终止解析,这样的一个
好处是如果实际上你只需要对文档的一部分信息进行处理的时候,你可以在得到该
部分信息以后,就终止对文档的解析。同时,当你想要提取文档中一小部分内容的
时候(对许多基于XML的应用来说,实际上没有必要读完整个XML文档),比如,你想
要通过扫描数据找到文档中关于某一个特定股票的相关信息的时候,就不需要把不
必要的数据放到内存里面,用SAX,你的应用能够扫描数据发现和该股票相关的信
息,然后创建一个仅和该部分相关的一个文档结构,这样不仅节省了系统资源,还
节省了处理时间。另外,当你想要创建一个新的文档结构时,在一些情况下,你可
能想要使用SAX来创建一个高层对象的数据结构,比如股票代码和价格信息,然后
和其他的XML文档的数据进行结合,而不是建立一个有关低层的元素、属性、处理 指令
相关的DOM结构的时候,你可以通过使用SAX更加有效的建立文档结构。特别当
系统资源有限的时候,对大规模的文档来说,SAX提供了一个更加有效的方法来解
析XML文档。因为SAX可以只处理文档中某一部分的信息,而DOM实际上是根据整个
文档建立树状结构并放到内存中,所以如果XML文件很大的话,DOM模型对内存的需
要量就很大。
SAX的缺陷
SAX模型也存在一些缺陷,因为整个文档并没有放到内存中,所以它不能随机
的到达文档的某一部分,同时也因为整个文档不在内存中,开发人员必须在处理过
程中按顺序处理信息,所以SAX在处理包含很多内部交叉引用的文档时就会有一些
困难。不能实现复杂的搜索,同时你在处理文档部分信息的时候,必须自己考虑清
楚是否保存相关的上下文信息。而且在当前的IE浏览器中还不支持SAX的实现。同
时需要注意的是,DOM是已经被W3C承认的标准,而SAX还仅仅是微软自己建立的一
个规范。
两者都是对XML的解析方式。
SAX是触发式,可以局部解析,内存开销小,微软的个人标准。
DOM是静态的全局解析,全部读入内存处理,内存开销大,通用标准。你的分我最后结帖的时候给,现在想知道第一个问题的答案
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import java.io.StringReader;
public class xmlhelper
{ public xmlhelper()
{
} public static XMLDocumentHandler loadXMLFile(String path)
throws Exception
{
XMLDocumentHandler dochandler = new XMLDocumentHandler();
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
parser.setContentHandler(dochandler);
parser.parse(path);
return dochandler;
}}注:XMLDocumentHandler 是 extends DefaultHandler 的一个类
http://www.csdn.net/Develop/read_article.asp?id=20720
http://www.csdn.net/Develop/read_article.asp?id=20721
这里的分全给你了,我马上另开一贴送你50分。另外,希望能交个朋友,有空问你点问题,我的QQ是3921746。