在写天气预报简单程序时,对XML格式的城市数据进行解析,存储在已经建立的数据库中,以下为简单解析方法:
/**
* 解析网络返回的XML数据
* @param response 网络返回数据字符串
* @param happinessWeatherDB 数据库实例对象
* @return 如果response不为空,解析完成并存储在数据库,返回true;如果response为空,不进行解析,返回false
*/
public synchronized static boolean ParseXML(String response, HappinessWeatherDB happinessWeatherDB) {
try {
if (!TextUtils.isEmpty(response)){
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(new StringReader(response));
int eventType = xmlPullParser.getEventType();
City city=new City();
while (eventType != xmlPullParser.END_DOCUMENT) {
String str = xmlPullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG: {
if ("weaid".equals(xmlPullParser.getName())) {
int id = Integer.parseInt(xmlPullParser.nextText());
city.setWeather_id(id);
} else
if ("citynm".equals(xmlPullParser.getName())) {
String name = xmlPullParser.nextText();
city.setCityName(name);
} else if ("cityid".equals(xmlPullParser.getName())) {
String code = xmlPullParser.nextText();
city.setCity_Code(code);
}
break;
}
case XmlPullParser.END_TAG: {
// 将解析出来的数据存储到City表
if(str.startsWith("item_")) {
happinessWeatherDB.saveCity(city);
}
break;
}
default:
break;
}
eventType = xmlPullParser.next();
}
return true;
}
}
catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}