<TextView
android:id="@+id/tv_weather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
private int wendu;
private int wind;
private String type;
private int id;
@Override
public String toString() {
return "天气信息 [温度=" + wendu + ", 风力=" + wind + "级 , 天气状况=" + type
+ ", 未来第=" + id + "天]";
}
public class XmlReader {
public static List<XmlInfo> getXml(InputStream is) throws Exception {
// 获得xml解析器
XmlPullParser parser = Xml.newPullParser();
// 初始化解析器
parser.setInput(is, "utf-8");
// 解析xml
int eventType = parser.getEventType();// 第一次被调用的时候 定位在xml开头
List<XmlInfo> xmlInfos = null;
XmlInfo xmlInfo = null;
while (eventType != XmlPullParser.END_DOCUMENT) {//需要不停的让解析器解析下一条
switch (eventType) {
case XmlPullParser.START_TAG:
if("weather".equals(parser.getName()))
{
// 发现开始节点 为weather 创建集合
xmlInfos = new ArrayList<XmlInfo>();
} else if ("day".equals(parser.getName())) {
// 发现一个新的日期 对应的天气
xmlInfo = new XmlInfo();
String id = parser.getAttributeValue(0);
xmlInfo.setId(Integer.parseInt(id));
} else if ("wendu".equals(parser.getName())) {
String wendu = parser.nextText();
xmlInfo.setWendu(Integer.parseInt(wendu));
} else if ("wind".equals(parser.getName())) {
String wind = parser.nextText();
xmlInfo.setWind(Integer.parseInt(wind));
} else if ("type".equals(parser.getName())) {
String type = parser.nextText();
xmlInfo.setType(type);
}
break;
case XmlPullParser.END_TAG:
if ("day".equals(parser.getName())) {
xmlInfos.add(xmlInfo);
}
break;
default:
break;
}
eventType = parser.next();// 控制解析器 解析下一个节点
}
is.close();
return xmlInfos;
}
}
TextView tv = (TextView) findViewById(R.id.tv_weather);
StringBuilder sb = new StringBuilder();
List<XmlInfo> xmlinfos;
try {
xmlinfos = XmlReader.getXml(getClassLoader().getResourceAsStream("weather.xml"));
for(XmlInfo xmlinfo : xmlinfos)
{
sb.append(xmlinfo.toString());
sb.append("\n");
}
tv.setText(sb.toString());
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
Toast.makeText(this, "解析信息失败", 0).show();
}