随着技术的发展,现在的web已经和以前不同了。web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面。学习各方面的知识,今天就接着前几天的弄一下android的xml解析,这次就使用sax的方式解析xml.下面就一步一步的来做吧。

1.编写一个简单的xml

<?xml version="1.0" encoding="UTF-8"?>
<persons><person id="01"><name>will</name><age>21</age></person><person id="02"><name>will2</name><age>22</age></person>
</persons>

2.编写pojo类

package org.lxh.vo;public class Person {private String id;private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String toString() {return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}
}

3.写一个解析xml的类

package org.lxh.impl;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;import org.lxh.vo.Person;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;import android.util.Log;public class Parse {public List<Person> findAll(InputStream in) throws Exception {SAXParserFactory factory = SAXParserFactory.newInstance(); //创建解析工厂SAXParser parser = factory.newSAXParser();ParsePerson chuli = new ParsePerson();parser.parse(in, chuli);in.close(); //关闭输入流return chuli.getData();}//开始解析xmlpublic class ParsePerson extends DefaultHandler {List<Person> all = null;Person person = null;String flag = null;public List<Person> getData() {return all;}public void startDocument() throws SAXException {all = new ArrayList<Person>();  //实例化集合}public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if ("person".equals(localName)) {  person = new Person();person.setId(attributes.getValue(0)); //取得id的内容}flag = localName;  //记录上一个element}public void characters(char[] ch, int start, int length)throws SAXException {if (flag != null) {  //这样做取得的值就不会重复String data = new String(ch, start, length);if ("name".equals(flag)) {person.setName(data);}else if ("age".equals(flag)) {person.setAge(Integer.parseInt(data));}}}public void endElement(String uri, String localName, String qName)throws SAXException {if ("person".equals(localName)) {all.add(person);person = null;}flag = null;}}
}

4.进行单元测试

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="org.lxh.activity"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><uses-library android:name="android.test.runner"/><activity android:name=".SaxParseXmlActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="org.lxh.activity" android:label="TestforMyApp"/><uses-sdk android:minSdkVersion="8" /></manifest> 
package org.lxh.activity;import java.io.InputStream;
import java.util.Iterator;
import java.util.List;import org.lxh.impl.Parse;
import org.lxh.vo.Person;import android.test.AndroidTestCase;
import android.util.Log;public class Test extends AndroidTestCase{public static final String tag="Test";public void testShuchu() throws Throwable{//Log.i(tag, "123");Parse p=new Parse();InputStream in=getClass().getClassLoader().getResourceAsStream("persons.xml");List<Person> all=p.findAll(in);Log.i(tag, String.valueOf(all.size()));Iterator<Person> it=all.iterator();while(it.hasNext()){Person person=it.next();Log.i(tag, person.toString());}}
}

最后来看一下运行效果图,这里最好弄个filter,控制台就没那么乱了。

点击那个绿色的加号就OK了

不知道大家有没有不理解的地方,如果有可以写评论给我。

android使用sax解析xml相关推荐

  1. android用sax解析xml,详解android使用SAX解析XML文件

    解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...

  2. android xml sax解析,《android用SAX解析xml》

    主要的Acivity package com.xml.xml; import java.io.Serializable; import java.util.ArrayList; import java ...

  3. android用sax解析xml,Android:采用SAX解析XML实例

    接着之前的部分现在要编写代码解析如下的person.xml文件 liming 30 xiaohong 25 程序结构图如下 person类用于保存信息 SAXPersonService负责解析 pac ...

  4. Android使用SAX解析XML(6)

    应用截图: (1)开始运行时 (2)选择学院 (3)选择专业 (4)选择班级 (5)选择班级的详细信息 本文参考了<Android平台开发之旅>.

  5. android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...

    转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657 Sax解析xml 以下是测试Demo 运行程序类 public class Te ...

  6. android 如何使用SAX解析XML

    今天,简单讲讲android如何使用SAX解析XML . 昨天,我看代码时,看到了解析xml文档的代码,是使用SAX解析XML.但是我却不会使用SAX,于是在网上查找资料,最终解决了问题.这里记录一下 ...

  7. android xml defaulthandler解析,sax解析xml文件的DefaultHandler处理类

    一千年的时光,我无数次掀起岁月的帷幔,只为和你,在某一个平静如水的日子相遇,然后相识,倾情一生,缱绻一世,好美的散文,好吧,我情愿把这个"你"当作android:),使用sax解析 ...

  8. Android学习笔记---android平台中利用,SAX解析xml

    1.SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺 序解析文档的过程中 ...

  9. android sax解析xml

    在android 中解析 android 主要有 2 种方法,分别是 sax 和 jdom 第一种:SAX 是一个解析速度快并且占用内存少的 xml 解析器,非常适合用于  Android 等移动设备 ...

最新文章

  1. linux进程间通信:system V 信号量 生产者和消费者模型编程案例
  2. DNS and BIND
  3. 使用LoadRunner测试WMS
  4. JavaScriptjQuery 基本使用
  5. 推荐经典算法实现之BPMF(pymc3+MovieLen)
  6. [计数排序]leatcode--1365. 有多少小于当前数字的数字
  7. Qt Creator调试Qt Quick示例应用程序
  8. 【转】无服务计算(Serverless Computing)核心知识
  9. 笨办法学python3 pdf 脚本之家_解决python3输入的坑——input()
  10. 洛谷P2016 战略游戏【树形dp】
  11. 扎金花 游戏开发细节与部分代码
  12. 字符串转HTML段落
  13. br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
  14. 基于华为云IoT设计的智能门锁
  15. 多元函数泰勒展开与黑塞矩阵
  16. autojs利用坚果云实现云更新
  17. AR/VR研究框架——迎接AR元年
  18. 奥布莱恩杯尘埃落定 人工智能立功了!
  19. http下载异常_荏苒项目二:配置(日志,异常,数据库,前端,跨域CORS)
  20. 机械工程基础笔记整理

热门文章

  1. qt之QDBus简单应用
  2. 详解Instagram价值7.5亿美元的简洁技术(PPT)
  3. 技术晨读积累_20140526
  4. 第9/9课:敏捷专题讲解【41-47】-科科过PMP
  5. 【STL四】序列容器——vector容器
  6. Android 每周一个小轮子之 学习仿网易云广场歌单的效果
  7. MinDoc文档管理系统在宝塔环境安装教程
  8. NProgress.js的简单使用
  9. k近邻算法与朴素贝叶斯算法
  10. Kubernetes(k8s)的弹性伸缩