/*
自从XML真正形成以来(我认为是Org.W3C组织发布XML标准时开始),XML得到了很快的发展,
很多厂商都有推出了自己的XML解析器,如Apache的xalan,IBM的xerces,sun的JDOM等,不过这些都是在
基于JAXP(java API for XML processing)的,从JDK 1.4.0开始的后续j2sdk里都附加了JAXP,这给开发人员
带来了很大的方便,这使得我们在处理一般的XML功能上的问题时不再需要去用第三方的XML处理器了.
随着XML的迅速发展,SAX也从1.0到了现在的2.0了(还是能够和1.0兼容),结构上有了一些较大的变化.
DOM(document object model)每次读取XML节点时都要把它load到内存里 来,在文档很大时,就显得很慢了,SAX(simple API for XML),是一个XML解析器的接口,它比DOM更低级一些,它是一种基于事件和回调模式的XML处理方式, 因此在解析速度上DOM是没法比 的(当要解析的XML文档很大的时更是如此).那么在SAX中事件响应(event)是什么呢 ? 我个人认为这一点和Swing,AWT中的事件义有点相似的,都有是指在触发某些特定的行为时所做的处理,如:mouse 的click事件等到. 这里则是指碰到特定的XML节点的所做的处理,如文档开始(startDocument),文档结束 (endDocument),元素开始(startElement)等很多,大家看一下SAX的API中的方法名字就知道有哪些事件了,基本上可以做到见 文知义的.在只想分析XML内容(只读),要求高性能,灵活性 能够定位错误信息(SAX能够定位错误的行列位置)时,最好用SAX来做. 一般情况下SAX是按下面的原理去使用的:
<1>设置事件处理器(SAX 1.0是使用一个通过继承HandlerBase类的实例来设置的,SAX 2.0则是继承DefaultHandler的,还有用XMLReader方式的,在原理上没有很大的区别)
<2>载入要解析