以备今后查询: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;
}
@Override
public 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 block
e.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]