package com.animee.day15.xml_test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2018/1/12.
* 解析网络的xml数据的类
*/
public class ParseXML {
public static WeatherBean parseXML(String content){
WeatherBean bean = new WeatherBean();
List<WeatherBean.Weather>weatherList = new ArrayList<>();
List<WeatherBean.Zhishu>zhishuList = new ArrayList<>();
bean.setWeatherList(weatherList);
bean.setZhishuList(zhishuList);
// 开始解析---》pull解析
// 1.获得工厂类对象
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 2.获得解析器对象
XmlPullParser pullParser = factory.newPullParser();
// 3.设置需要解析的数据源
// 把String转化成输入流
ByteArrayInputStream bais = new ByteArrayInputStream(content.getBytes());
pullParser.setInput(bais,"utf-8"); //第一个参数:输入流,第二个参数:编码格式
// 4.获得响应码
int code = pullParser.getEventType();
// 在循环开始之前,想把添加到集合当中的对象的引用,获取到
WeatherBean.Weather weather = null;
WeatherBean.Zhishu zhishu = null;
while (code != XmlPullParser.END_DOCUMENT) {
// 获取正在被解析的标签名
String name = pullParser.getName();
switch (code) {
case XmlPullParser.START_TAG:
if (name.equals("city")) {
String city = pullParser.nextText();
bean.setCity(city);
}else if (name.equals("updatetime")) {
bean.setUpdatetime(pullParser.nextText());
}else if (name.equals("wendu")) {
bean.setWendu(pullParser.nextText());
}else if (name.equals("shidu")) {
bean.setShidu(pullParser.nextText());
}else if (name.equals("fengxiang")) {
bean.setFengxiang(pullParser.nextText());
}else if (name.equals("weather")) {
weather = new WeatherBean.Weather();
}else if (name.equals("date")) {
weather.setDate(pullParser.nextText());
}else if (name.equals("high")) {
weather.setHigh(pullParser.nextText());
}else if (name.equals("low")) {
weather.setLow(pullParser.nextText());
}else if (name.equals("zhishu")) {
zhishu = new WeatherBean.Zhishu();
}else if (name.equals("name")) {
zhishu.setName(pullParser.nextText());
}else if (name.equals("value")) {
zhishu.setValue(pullParser.nextText());
}else if (name.equals("detail")) {
zhishu.setDetail(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if (name.equals("weather")) {
weatherList.add(weather);
}else if (name.equals("zhishu")) {
zhishuList.add(zhishu);
}
break;
}
// 移动指针,指向下一个节点
code = pullParser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bean;
}
}
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2018/1/12.
* 解析网络的xml数据的类
*/
public class ParseXML {
public static WeatherBean parseXML(String content){
WeatherBean bean = new WeatherBean();
List<WeatherBean.Weather>weatherList = new ArrayList<>();
List<WeatherBean.Zhishu>zhishuList = new ArrayList<>();
bean.setWeatherList(weatherList);
bean.setZhishuList(zhishuList);
// 开始解析---》pull解析
// 1.获得工厂类对象
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 2.获得解析器对象
XmlPullParser pullParser = factory.newPullParser();
// 3.设置需要解析的数据源
// 把String转化成输入流
ByteArrayInputStream bais = new ByteArrayInputStream(content.getBytes());
pullParser.setInput(bais,"utf-8"); //第一个参数:输入流,第二个参数:编码格式
// 4.获得响应码
int code = pullParser.getEventType();
// 在循环开始之前,想把添加到集合当中的对象的引用,获取到
WeatherBean.Weather weather = null;
WeatherBean.Zhishu zhishu = null;
while (code != XmlPullParser.END_DOCUMENT) {
// 获取正在被解析的标签名
String name = pullParser.getName();
switch (code) {
case XmlPullParser.START_TAG:
if (name.equals("city")) {
String city = pullParser.nextText();
bean.setCity(city);
}else if (name.equals("updatetime")) {
bean.setUpdatetime(pullParser.nextText());
}else if (name.equals("wendu")) {
bean.setWendu(pullParser.nextText());
}else if (name.equals("shidu")) {
bean.setShidu(pullParser.nextText());
}else if (name.equals("fengxiang")) {
bean.setFengxiang(pullParser.nextText());
}else if (name.equals("weather")) {
weather = new WeatherBean.Weather();
}else if (name.equals("date")) {
weather.setDate(pullParser.nextText());
}else if (name.equals("high")) {
weather.setHigh(pullParser.nextText());
}else if (name.equals("low")) {
weather.setLow(pullParser.nextText());
}else if (name.equals("zhishu")) {
zhishu = new WeatherBean.Zhishu();
}else if (name.equals("name")) {
zhishu.setName(pullParser.nextText());
}else if (name.equals("value")) {
zhishu.setValue(pullParser.nextText());
}else if (name.equals("detail")) {
zhishu.setDetail(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if (name.equals("weather")) {
weatherList.add(weather);
}else if (name.equals("zhishu")) {
zhishuList.add(zhishu);
}
break;
}
// 移动指针,指向下一个节点
code = pullParser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bean;
}
}