Я пытаюсь проанализировать данные о погоде в Android Studio по этой ссылке ...
http://metwdb-openaccess.ichec.ie/metno-wdb2ts/locationforecast?lat=54.7210798611;long=-8.7237392806
Я пытался использовать XmlPullParser, но я знаю, что я где-то ошибаюсь. Вот код на данный момент ...
public class WeatherParser extends AsyncTask {
URL url;
ArrayList<Weather> w = new ArrayList<>();
@Override
protected Object doInBackground(Object[] objects) {
try {
url = new URL("http://metwdb-openaccess.ichec.ie/metno-wdb2ts/locationforecast?lat=54.7210798611;long=-8.7237392806");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser parser = factory.newPullParser();
parser.setInput(url.openConnection().getInputStream(), "UTF_8");
ArrayList<Weather> weatherArrayList = parseXML(parser);
for(Weather weather: weatherArrayList ){
w.add(weather);
}
}catch (MalformedURLException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return w;
}
private ArrayList<Weather> parseXML(XmlPullParser parser) throws XmlPullParserException, IOException{
ArrayList<Weather> weathers = null;
int eventType = parser.getEventType();
Weather weather = null;
while(eventType != XmlPullParser.END_DOCUMENT){
String name;
switch(eventType){
case XmlPullParser.START_DOCUMENT:
weathers = new ArrayList<>();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if(name.equals("time")){
weather = new Weather();
weather.time = parser.getAttributeValue(null, "from");
}
else if(weather != null){
if(name.equals("temperature")){
weather.temperature = parser.getAttributeValue(null, "value");
}
else if(name.equals("symbol")){
weather.weatherType = parser.getAttributeValue(null, "id");
}
}
}
}
return weathers;
}
public InputStream getInputStream(URL url) {
try {
return url.openConnection().getInputStream();
} catch (IOException e) {
return null;
}
}
public ArrayList<Weather> weathers()
{
return w;
}
}
Является ли XMLParser правильным инструментом, или я должен заняться чем-то другим. Я попытался использовать DOMParser в Eclipse, и это сработало, но я не представляю, как его использовать в Android Studio.