android使用sax解析xml
来源:互联网 发布:练手速的软件 编辑:程序博客网 时间:2024/05/17 22:04
随着技术的发展,现在的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
- Android 使用SAX解析XML
- android使用sax解析xml
- android使用sax解析xml
- Android中使用SAX解析XML
- android中使用sax解析xml
- Android中使用sax解析XML
- Android使用SAX解析XML文档
- Android中使用SAX来解析XML
- Android中使用SAX来解析XML
- android中使用SAX解析xml文件
- android 使用SAX解析xml文件
- Android 使用SAX解析XML文件
- Android中使用SAX解析XML
- Android中SAX解析XML的使用
- android SAX解析XML
- JAVA1.5新特性----享元模式:flayweight
- 极度烦躁
- Giftly:送礼品卡,还告诉你该去哪消费掉
- JAVA1.5新特性----枚举Enum
- Android应用程序组件Content Provider的启动过程源代码分析
- android使用sax解析xml
- SVN基本操作之新手上路
- mysql数据库操作类
- 为应对Nook Tablet挑战,亚马逊Kindle Fire将预装Hulu Plus
- 关于“非基本类型需慎用memcpy函数”的分析
- tomcat 域名配置
- 专访:新兴支付公司Dwolla是如何成为信用卡杀手的?
- 老王的 LIMIT 优化 PHP分页
- 为计算机结果建立高效,可伸缩的的高速缓存(java并发编程实践读书笔记四)