Android 获取XML格式的在线天气API数据
贝特说,我正在与在线服务合作,学习如何与它们合作。我必须从雅虎的天气API请求天气数据,并用JSon读取。但是雅虎现在似乎没有提供Json格式的数据,所以我必须用XML格式 我已经用JSon编写了代码,但我不确定如何使用XML 这是请求代码:Android 获取XML格式的在线天气API数据,android,xml,json,Android,Xml,Json,贝特说,我正在与在线服务合作,学习如何与它们合作。我必须从雅虎的天气API请求天气数据,并用JSon读取。但是雅虎现在似乎没有提供Json格式的数据,所以我必须用XML格式 我已经用JSon编写了代码,但我不确定如何使用XML 这是请求代码: URL url = null; HttpURLConnection connection = null; url = new URL(WEATHER_URL + code); connection = (HttpURLConnection) url.op
URL url = null;
HttpURLConnection connection = null;
url = new URL(WEATHER_URL + code);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream is = connection.getInputStream();
//Parse response here
WeatherInfo info = readWeatherInfo(is);
return info;
这是我在JSon中获得它的方式:
private WeatherInfo readWeatherInfo(InputStream is){
if (is == null)
return null;
WeatherInfo info = new WeatherInfo();
JsonReader reader = null;
try {
reader = new JsonReader(new InputStreamReader(is));
reader.beginObject();
while (reader.hasNext()){
if (isCancelled()) break;
String name = reader.nextName();
if (name.equals(LOCATION_NAME)){ //Location
reader.beginObject();
while (reader.hasNext()){
String name2 = reader.nextName();
if (name2.equals(CITY_NAME)){
info.city = reader.nextString();
} else reader.skipValue();
}
reader.endObject();
} else if (){
//...
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return info;
}
}
}
这是我开始用XML做这件事的方式,但我不确定:
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new InputStreamReader(is));
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_TAG:
while (parser.next()) {
String name = parser.getName();
if (name.equals(LOCATION_NAME)){
String name2 = parser.getName();
if (name2.equals(CITY_NAME)) {
info.city = parser.getText();
}
}
else if (name.equals(CONDITION_NAME)){
//...
}
更新-XML文件链接:
是Android上XML解析的优秀教程
如果需要,请下载
您将找到一个通用的XML解析器,可以普遍使用。一个XML示例将非常有用。@s1m3n您的意思是什么?我没有更多的代码,我只有这些。正如我所说的,我已经用JSon实现了,但不知道如何用XML实现。您正在解析XML,但没有提供XML结构的示例,因此我不知道您的XML解析代码是否正常。我想我可以查一下Yahoo API,但这是你的问题。@s1m3n是的,对不起,你是对的。我已经用XML文件nice-one的链接更新了这篇文章,但是我必须使用SAX而不是DOM。不确定它们之间是否存在相关差异,或者我仍然可以使用这个示例。如果我说SAX和DOM是相同的,那我就错了。您可以在此处查看差异:。但在您的场景中,无论如何,使用DOM会更好。所以,这个代码会像一个符咒一样工作。我在所有项目中都使用它。