2011年计算机二级JAVA知识点:Java与XML联合编程之SAX篇
来源:不详
加入收藏 0评论
2011/12/9 17:25:15

学历提升报名! 咨询微信:177 8786 5775  培训咨询:133 1252 4700(微信)

2025年云南成人高考大专-本科报名简章

【经济师培训】【建造师】 【法考】【技能证】【教师证】

 

3.7 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文件:

  Ogden Nash

  Adam

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

  遇到的项目 方法回调

  {文档开始} startDocument()

  startElement(null,"POEM",null,{Attributes})

  "\n" characters("\n...", 6, 1)

  startElement(null,"AUTHOR",null,{Attributes})

  "Ogden Nash" characters("\n...", 15, 10)

  endElement(null,"AUTHOR",null)

  "\n" characters("\n...", 34, 1)

  endElement(null,"TITLE",null)

  "\n" characters("\n...", 55, 1)

  startElement(null,"LINE",null,{Attributes})

  "Adam" characters("\n...", 62, 4)

  endElement(null,"LINE",null)

  "\n" characters("\n...", 67, 1)

  endElement(null,"POEM",null)

  {文档结束} endDocument()

 

 

—————————————————————————
温馨提示:因考试政策、内容不断变化与调整,学课在线提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
>>长期招聘兼职招生代理,有意请联系我们;团报优惠、项目合作咨询:13312524700(微信)
课程试听.报名  >>题库.做题
>>直播课程
>>录播课程

课程名称  课程试听
课程名称
课程试听
初级会计师

一级建造师

中级会计师

二级建造师

注册会计师

造价工程师

经济师考试

监理工程师

银行从业

安全工程师

基金从业

消防工程师

人力资源师

法律职业资格
社会工作者   
消防设施操作

教师资格证
成人高考
执业药师
自考辅导课

护士资格证

考研辅导课

心理咨询师
公共营养师

公务员培训
文职培训
考研培训
统招专升本
计算机软考
咨询工程师
养老护理员
房产经纪人

税务师培训
其它课程>>

热点推荐
  • 【中科院心理研究所准考证】:https://jcpx.psych.ac.cn/​
    2021-12-11 2138
  • 【中科院心理研究所成绩查询】:https://jcpx.psych.ac.cn/​
    2021-10-13 5072
  • 2021年5月辽宁心理咨询师成绩合格分数线
    2021-10-13 2017
  • 四川2021年5月心理咨询师成绩在哪里查询,多少分合格?
    2021-10-13 2017
  • 非心理学专业考生如何备考心理咨询师?
    2021-07-01 2034
网友评论
热门评论