SAX编程技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SAX编程技术.doc

SAX 编程技术 1、概述 SAX API(Simple API for XML),它是由一组接口和类构成的。在运行中的各方面表现都优于DOM API,但SAX用起来不像DOM那样直观。 SAX它并不是由W3C官方所提出的标准,可以说是民间的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。 SAX解释器,可以说是一个把具体操作留给编程人员而把解释工作留给自己的一个编程模型它并没有DOM那样把整个XML文档加载到内存而是逐行解释然后通过事件通知给程序由具体的程序使用这些通知后加以处理有些类似于AWT中的事件驱动机制,通过事件驱动来识别XML文档的内容POEM AUTHOROgden Nash/AUTHOR TITLEFleas/TITLE LINEAdam/LINE /POEM 当XMLReader读到POEM标签时,就会调用ContentHandler.startElement()方法,并把标签名POEM作为参数传递过去。在你实现的startElement()方法中需要做相应的动作,以处理当POEM出现时应该做的事情 各个事件随着解析的过程(也就是文档读入的过程)一个个顺序的被抛出,相应的方法也会被顺序的调用,最后,当解析完成,方法都被调用后,对文档的处理也就完成了。 下面的这个表,列出了在解析上面的那个XML文件的时候,顺序被调用的方法: 遇到的项目 方法回调 {文档开始} startDocument() POEM startElement(null,POEM,null,{Attributes}) characters(POEM ..., 6, 1) AUTHOR startElement(null,AUTHOR,null,{Attributes}) Ogden Nash characters(POEM ..., 15, 10) /AUTHOR endElement(null,AUTHOR,null) characters(POEM ..., 34, 1) TITLE startElement(null,TITLE,null,{Attributes}) Fleas characters(POEM ..., 42, 5) /TITLE endElement(null,TITLE,null) characters(POEM ..., 55, 1) LINE startElement(null,LINE,null,{Attributes}) Adam characters(POEM ..., 62, 4) /LINE endElement(null,LINE,null) characters(POEM ..., 67, 1) /POEM endElement(null,POEM,null) {文档结束} endDocument() (3)SAX的不足 要注意的是SAX中一个重要的特点就是它的流式处理,在遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。这使得SAX在编程处理上没有DOM来得那么方便。 (4)DOM的不足 而DOM API是一种基于对象的API。实现DOM的XML解析器在内存中生成代表XML文档内容的一般对象模型。XML解析器一旦完成解析,内存中也就有了一个同时包含XML文档的结构和内容信息的DOM对象树。 DOM的不足:DOM在用于对性能要求高的程序设计时却存在严重的不足。目前支持DOM的XML解析器都使用一种对象存储的方式,也就是创建很多小的代表DOM节点的对象,这些节点对象还包含了文本或嵌套其它DOM节点。这看似顺理成章,但却造成了性能的下降。Java中最为影响性能的操作之一是new操作符。对应于new操作符的每一次执行,在对所得对象的所有引用都消失后,垃圾收集器都要负责将这个对象从内存中清除。DOM API的众多小对象一般在解析完后被立即抛弃,这几乎耗光了JVM的所有内存。 DOM的另一个不足是它把整个的XML文档都装入内存。对于大的文档,这就成了一个问题。再一次地,因为DOM是基于许多小对象实现的,所以在保存XML文档的同时,JVM还要用额外的几字节来保存关于所有这些对象的信息,这样一来,内存使用就变得比XML文档本身还要大。 DOM API的另一个不易察觉的问题是,使用它写成的代码要扫描XML文档两次。第一次将DOM结构读进内存,第二次

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档