android使用sax解析xml
随着技术的发展,现在的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相关推荐
- android用sax解析xml,详解android使用SAX解析XML文件
解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...
- android xml sax解析,《android用SAX解析xml》
主要的Acivity package com.xml.xml; import java.io.Serializable; import java.util.ArrayList; import java ...
- android用sax解析xml,Android:采用SAX解析XML实例
接着之前的部分现在要编写代码解析如下的person.xml文件 liming 30 xiaohong 25 程序结构图如下 person类用于保存信息 SAXPersonService负责解析 pac ...
- Android使用SAX解析XML(6)
应用截图: (1)开始运行时 (2)选择学院 (3)选择专业 (4)选择班级 (5)选择班级的详细信息 本文参考了<Android平台开发之旅>.
- android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...
转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657 Sax解析xml 以下是测试Demo 运行程序类 public class Te ...
- android 如何使用SAX解析XML
今天,简单讲讲android如何使用SAX解析XML . 昨天,我看代码时,看到了解析xml文档的代码,是使用SAX解析XML.但是我却不会使用SAX,于是在网上查找资料,最终解决了问题.这里记录一下 ...
- android xml defaulthandler解析,sax解析xml文件的DefaultHandler处理类
一千年的时光,我无数次掀起岁月的帷幔,只为和你,在某一个平静如水的日子相遇,然后相识,倾情一生,缱绻一世,好美的散文,好吧,我情愿把这个"你"当作android:),使用sax解析 ...
- Android学习笔记---android平台中利用,SAX解析xml
1.SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺 序解析文档的过程中 ...
- android sax解析xml
在android 中解析 android 主要有 2 种方法,分别是 sax 和 jdom 第一种:SAX 是一个解析速度快并且占用内存少的 xml 解析器,非常适合用于 Android 等移动设备 ...
最新文章
- linux进程间通信:system V 信号量 生产者和消费者模型编程案例
- DNS and BIND
- 使用LoadRunner测试WMS
- JavaScriptjQuery 基本使用
- 推荐经典算法实现之BPMF(pymc3+MovieLen)
- [计数排序]leatcode--1365. 有多少小于当前数字的数字
- Qt Creator调试Qt Quick示例应用程序
- 【转】无服务计算(Serverless Computing)核心知识
- 笨办法学python3 pdf 脚本之家_解决python3输入的坑——input()
- 洛谷P2016 战略游戏【树形dp】
- 扎金花 游戏开发细节与部分代码
- 字符串转HTML段落
- br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
- 基于华为云IoT设计的智能门锁
- 多元函数泰勒展开与黑塞矩阵
- autojs利用坚果云实现云更新
- AR/VR研究框架——迎接AR元年
- 奥布莱恩杯尘埃落定 人工智能立功了!
- http下载异常_荏苒项目二:配置(日志,异常,数据库,前端,跨域CORS)
- 机械工程基础笔记整理