解析XML之SAX

来源:互联网 发布:怎么把电脑变成数据库 编辑:程序博客网 时间:2024/05/22 12:58

简述

SAX的全称是Simple APIs for XML,也即XML简单应用程序接口SAX API是一个基于事件的APISAX分析XML时触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX也被称作事件驱动SAX API主要的四种处理事件的接口ContentHandlerDTDHandlerEntityResolverErrorHandler优缺点当解析器发现元素开始,元素结束,文本,文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小使用场合Applet下载缺点:不是持久的,事件过后,若没保存数据,那么数据就丢了;无状态性,从事件中只能得到文本,但不知该文本属于哪个元素;使用场合只需XML文档的少量内容,很少回头访问;机器内存少

解析XML

<?xml version="1.0" encoding="UTF-8"?><students>    <student no="1001">        <name>lwc</name>        <sex>boy</sex>        <age>18</age>    </student>    <student no="1002">        <name>lwc</name>        <sex>boy</sex>        <age>18</age>    </student></students>

案例

package com.itlwc.action;import java.io.File;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;class MyHandler extends DefaultHandler {@Overridepublic void startDocument() throws SAXException {System.out.println("parse began");}@Overridepublic void endDocument() throws SAXException {System.out.println("parse finished");}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {System.out.println("start element : " + qName);}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {System.out.println("finish element : " + qName);}}public class TestSax {public static void main(String[] args) throws Exception {// 获得SAX解析器工厂实例SAXParserFactory factory = SAXParserFactory.newInstance();// 获得SAX解析器实例SAXParser parser = factory.newSAXParser();// 开始进行解析parser.parse(new File("student.xml"), new MyHandler());}}/*打印结果:parse beganstart element : studentsstart element : studentstart element : namefinish element : namestart element : sexfinish element : sexstart element : agefinish element : agefinish element : studentstart element : studentstart element : namefinish element : namestart element : sexfinish element : sexstart element : agefinish element : agefinish element : studentfinish element : studentsparse finished*/


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 百度网盘好友发的分享不存在怎么办 4g手机的下载速度很慢怎么办 为什么打开百度网盘的速度慢怎么办 百度网盘限制了我的宽带速度怎么办 联通信号很好但网速特别慢怎么办 苹果手机版本低下载不了软件怎么办 国内的手机要上推特和油管要怎么办 推特注册了卡在手机号怎么办 腾讯微信登录的账号密码忘了怎么办 打开手机浏览器自动跳到网页怎么办 游戏包解压后找不到启动的怎么办? 每次都要解压一次才能运行怎么办 误冲了王者荣耀点劵怎么办 机顶盒上开通的vip手机上怎么办 王者荣耀以前玩的区找不到了怎么办 电脑分辨率调高了游戏进不去怎么办 键盘语言更改后进不去系统怎么办 高尔夫旅行款 被锁在车内怎么办 在天猫买东西垫付的运费不退怎么办 天猫店一口价定价定低了怎么办 服务器开机账号改了密码忘了怎么办 小米儿童电话手表开不开机怎么办? 上海拍牌超过5次违章怎么办 拍拍贷不能更新还不了款怎么办 起诉网贷平台不知道地址怎么办 网贷不知道在哪个平台借的怎么办 车过户后出现问题车主不承认怎么办 卖了车买家一直不过户怎么办 我的车卖了但是买家不过户怎么办 如果买家拍了赠品但联系不上怎么办 淘宝产品处罚下架顾客退货怎么办 生源地贷款续贷密码忘了怎么办 助学贷款续贷密码忘了怎么办 京东上回收东西如果是坏的怎么办 58.同城找的工作被骗了怎么办 京东第三方买了二手机怎么办 手机无法显示百度视频的视频怎么办 如果微信被盗号朋友钱被骗怎么办 绑定银行卡的电话号码换了怎么办办 银行卡绑定的手机号空号了怎么办 微信提示绑定银行卡次数超限怎么办