sax解析xml
2015-10-14 23:23
190 查看
sax解析XML原理,基于事件驱动机制,在文档开头、标签开头等地方触发事件,解析速度快、占用内存少,但使用比较复杂,比较适合移动终端的使用方式
解析步骤:
①创建XML解析处理器。 SAXParserFactory factory = SAXParserFactory.newInstance();
②创建SAX解析器。 SAXParser parser = factory.newSAXParser();
③将XML解析处理器分配给解析器。 parser.parse(file, handler);
④对文档进行解析,将每个事件发送给处理器。
handler是自己创建类的对象如下所示:
解析步骤:
①创建XML解析处理器。 SAXParserFactory factory = SAXParserFactory.newInstance();
②创建SAX解析器。 SAXParser parser = factory.newSAXParser();
③将XML解析处理器分配给解析器。 parser.parse(file, handler);
④对文档进行解析,将每个事件发送给处理器。
handler是自己创建类的对象如下所示:
[code] public class MyHandler extends DefaultHandler { List<Person> list; Person p; String tagName; public MyHandler(){ } public List<Person> getList() { return list; } //读取标签中的字符信息时调用 @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub Log.i("my", "characters"); if(p != null && tagName != null){ String va = new String(ch,start,length); if(tagName.equals("name")){ p.setName(va); }else if(tagName.equals("age")){ p.setAge(Integer.parseInt(va)); } } } //每个标签时调用 @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); Log.i("my", "endElement"); if(this.tagName.equals("person")){ list.add(p); p = null; } tagName = null; } //开始文档时,第一个标签时调用 @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); Log.i("my", "startDocument"); list = new ArrayList<Person>(); } //标签开始时调用 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); Log.i("my", "startElement"); this.tagName = localName; if(tagName.equals("person")){ //把Id打进去 p = new Person(); p.setId(Integer.parseInt(attributes.getValue(0))); } } }
相关文章推荐
- 字符串
- MeteoInfo 新网站
- 高性能javascript 笔记 第一章 loading and executing (二) 动态加载script
- ABySS 拼接工具
- Mac OS X ,Windows,Unix-like上的“换行”
- NSPredicate
- 标准java http和 apach httpclient总结
- #最新动态#下周工作计划
- 合并有序的两个数字数组为一个
- [CareerCup] 11.1 Merge Arrays 合并数组
- VB+DX游戏编程教程 第五话:2D精灵
- Spring思维导图
- saiku - 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
- 正则表达式(regex)错误使用导致功能漏洞分析
- 数据库三种范式的通俗讲解
- Macbook os x 10.10.5 下装mysql 一些记录
- 磁盘分区、格式化及挂载使用
- Pillow实现图片对比
- HDU 1712 ACboy needs your help (分组背包)
- Android RelativeLayout属性,android:descendantFocusability属性用法