package indi.cc.pullparser;
import indi.cc.pullparser.domain.City;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Xml;
import android.view.View;
public class MainActivity extends ActionBarActivity {
List<City> cityList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
InputStream is = getClassLoader().getResourceAsStream("weather.xml");
XmlPullParser xp = Xml.newPullParser();
try {
xp.setInput(is,"utf-8");
int type = xp.getEventType();
City city = null;
while(type != XmlPullParser.END_DOCUMENT){
switch(type){
case XmlPullParser.START_TAG:
if("weather".equals(xp.getName())){
cityList = new ArrayList<City>();
}else if("city".equals(xp.getName())){
city = new City();
}else if("name".equals(xp.getName())){
String name = xp.nextText();
city.setName(name);
}
else if("temp".equals(xp.getName())){
String temp = xp.nextText();
city.setTemp(temp);
}
else if("pm".equals(xp.getName())){
String pm = xp.nextText();
city.setPm(pm);
}
break;
case XmlPullParser.END_TAG:
if("city".equals(xp.getName())){
cityList.add(city);
}
break;
}
type = xp.next();
}
for (City c : cityList) {
System.out.println(c.toString());
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package indi.cc.pullparser.domain;
public class City {
@Override
public String toString() {
return "City [name=" + name + ", temp=" + temp + ", pm=" + pm + "]";
}
public City() {
super();
}
private String name;
private String temp;
private String pm;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getPm() {
return pm;
}
public void setPm(String pm) {
this.pm = pm;
}
public City(String name, String temp, String pm) {
super();
this.name = name;
this.temp = temp;
this.pm = pm;
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="indi.cc.pullparser.MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="解析天气信息"
android:onClick="click"
/>
</RelativeLayout>
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<weather>
<city>
<name>上海</name>
<temp>5°</temp>
<pm>80</pm>
</city>
<city>
<name>北京</name>
<temp>-5°</temp>
<pm>800</pm>
</city>
<city>
<name>西安</name>
<temp>12°</temp>
<pm>60</pm>
</city>
</weather>