private void test() {
okHttpClient = new OkHttpClient.Builder().build();
request = new Request.Builder()
.url("http://flash.weather.com.cn/wmaps/xml/shanghai.xml")
.build();
textView = findViewById(R.id.text_city);
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
//网络访问失败
Log.d("cityData IOException:",e.toString());
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
String jsonData = response.body().string();
try {
//传入解析方法
parseXML_PULL(jsonData);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void parseXML_PULL(String xmlData) throws Exception {
//1.XmlPullParser
XmlPullParser parser = Xml.newPullParser();
//2.设置xml输入流
parser.setInput(new StringReader(xmlData));
//3.获取事件,配合while循环开始解析xml文件
int event = parser.getEventType();
List<City> citys = new ArrayList<City>();
City city =null;
while(event != XmlPullParser.END_DOCUMENT)
{
switch(event)
{
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
String tagName = parser.getName();
Log.d("cityData tagName:",tagName);
if("city".equals(tagName))
{
city =new City();
//属性解析
//String cityname = parser.getAttributeValue(null, "cityname");
//下标解析
String cityname = parser.getAttributeValue(2);
String stateDetailed = parser.getAttributeValue(null,"stateDetailed");
String windState = parser.getAttributeValue(null,"windState");
city.setCityName(cityname);
city.setStateDetailed(stateDetailed);
city.setWindState(windState);
citys.add(city);
}
break;
}
//手动出发下一个事件
event = parser.next();
}
for(City c : citys)
{
Log.d("cityData:", c.toString());
}
textView.setText(citys.toString());
}
网友评论