XML学习《SAX解析》

1.01SAX解析器及工作原理
    SAX(Simple API for XML)提供了解析XML文件的API,和DOM解析器比,不用将XML文件读入内存建立树状结
    构。SAX的 核心是事件处理机制,SAX解析器调用: parse(File f,DefaultHandler dh);
    解析XML文件,并向该方法传递一个事件处理器。SAX解析器在解析XML文件是过程中,根据从文件中解析出来
    的数据产生相应的事件,并报告这个事件给事件处理器,事件处理器就会处理所发现的数据,parse方法必须等
    待事件处理完毕后再继续解析文件,报告下一个事件,因此,对于SAX来说,较DOM解析器更高的效率,事件处
    理器每次在内存中只保留对一个事件的处理,处理完毕后即可释放该处理过程所占用的内存。
    使用SAX解析器的步骤如下:
    1:  SAXParserFactory factory= SAXParserFactory.newInstance();
    2:  SAXParser saxParser = factory.newSAXParser();
    同时要使用到javax.xml.parsers这个包。
    如果想要SAXParserFactory产生的SAX解析支持名称空间的话,
    可让factory对象调用setNamespaceAware(true)。

1.02:事件处理器
    SAX解析器使用下述方法解析XML文件:
    public void parse(File,DefaultHandler) throws SAXException,IOException;
    public void parse(InputStream,DefaultHandler) throws SAXException,IOException;
    public void parse(String,DefaultHandler) throws SAXException,IOException;

1.03:事件的产生与处理 
    SAX解析器的核心是事件处理机制,当SAX解析器调用parse()方法解析XML文件时,事件处理器会根据所产生的
    事件调用相应的方法来处理发现的数据,在编写程序时,需要使用DefaultHandler类的子类创建一个事件处理
    器,当处理器对报告的事件不感性趣时,就直接调用父类的方法,采用默认的处理方法,当处理器对报告的事件
    感性趣时,子类可以重写父 类的某些方法,调用重写的方法,以便处理器可以具体的处理解析器报告的数据。

1.04:文件的开始与结束
    当解析器开始解析XML文件时,就会报告"文件开始"事件,事件给事件处理器,然后再陆续地报告其他的事件,
    比如:"开始标记","文本事件",最后再报告"文件结束"事件。解析器报告"文件开始"事件,事件处理器就会调用:
    startDocument()方法,解析器报告"文件结束"事件,事件处理器会调用endDocument()方法,解析器在解析XML
    文件的过程中,只能报告一次"文件开始"和"文件结束"事件,换句话说,也只会调用一次startDocument()和
    endDocument()方法各一次。

1.05:XML中的处理指令
    XML中的处理指令比较特殊,它们不属性标记,它们为XML文件规定了特殊的规则,例如:
    <?xml version="1.0" encoding="UTF-8"?>
    处理指令规定XML文件必须使和UTF-8编码来保存和解析,解析器不报告XML声明给事件处理器,即不会报告上述
    指令。 但如下XML指令会报告给事件处理器:<?xml-styleshe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值