pull解析xml

来源:互联网 发布:base64编码c源码 编辑:程序博客网 时间:2024/06/09 18:29

以备今后查询:pull解析xml


model部分

package com.example.xmlpullparsertest.model;public class Student {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";}}

Service部分

package com.example.xmlpullparsertest.service;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import com.example.xmlpullparsertest.model.Student;import android.util.Xml;public class xmlParse {public static List<Student> readXml(InputStream inputStream) throws Exception{List<Student> students =null;Student student = null;XmlPullParser xmlpullparser = Xml.newPullParser();xmlpullparser.setInput(inputStream, "utf-8");int event = xmlpullparser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch(event){case XmlPullParser.START_DOCUMENT:students = new ArrayList<Student>();break;case XmlPullParser.START_TAG:if("student".equals(xmlpullparser.getName())){student = new Student();student.setId(new Integer(xmlpullparser.getAttributeValue(0)));}if("name".equals(xmlpullparser.getName())){student.setName(xmlpullparser.nextText());}if("age".equals(xmlpullparser.getName())){student.setAge(new Integer(xmlpullparser.nextText()));}break;case XmlPullParser.END_TAG:if("student".equals(xmlpullparser.getName())){students.add(student);student=null;}break;case XmlPullParser.END_DOCUMENT:break;}event = xmlpullparser.next();}return students;}}

test部分

package test;import java.io.InputStream;import java.util.List;import android.util.Log;import com.example.xmlpullparsertest.model.Student;import com.example.xmlpullparsertest.service.xmlParse;import junit.framework.TestCase;public class test extends TestCase {private static final String TAG = "test";protected void setUp() throws Exception {super.setUp();}public void testXml(){InputStream inStream=xmlParse.class.getClassLoader().getResourceAsStream("student.xml");List<Student> ls=null;try {ls = xmlParse.readXml(inStream);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}for(Student s : ls){Log.i(TAG,s.toString());}}}

package test;import java.io.InputStream;import java.util.List;import com.example.xmlpullparsertest.model.Student;import com.example.xmlpullparsertest.service.xmlParse;import android.test.AndroidTestCase;import android.util.Log;public class test2 extends AndroidTestCase {private static final String TAG = "test";protected void setUp() throws Exception {super.setUp();}public void testXml()throws Exception {InputStream inStream=xmlParse.class.getClassLoader().getResourceAsStream("student.xml");List<Student> ls=xmlParse.readXml(inStream);for(Student s : ls){Log.i(TAG,s.toString());}}}

上面2种形式都可以测试

student.xml

<?xml version="1.0" encoding="utf-8"?><students><student id="001"><name>jk</name><age>22</age></student><student id="002"><name>gl</name><age>22</age></student></students>

测试时student.xml放在和test同级目录,即src下


修改AndroidManifest.xml以便测试

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.xmlpullparsertest"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="10"        android:targetSdkVersion="16" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.xmlpullparsertest.XmlPullParserActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <uses-library android:name="android.test.runner"/>    </application><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.xmlpullparsertest" android:label="Test My App" /></manifest>

输出:

09-10 06:25:23.920: I/test(4781): Student [id=1, name=jk, age=22]
09-10 06:25:23.920: I/test(4781): Student [id=2, name=gl, age=22]