Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取XML格式的在线天气API数据_Android_Xml_Json - Fatal编程技术网

Android 获取XML格式的在线天气API数据

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

贝特说,我正在与在线服务合作,学习如何与它们合作。我必须从雅虎的天气API请求天气数据,并用JSon读取。但是雅虎现在似乎没有提供Json格式的数据,所以我必须用XML格式

我已经用JSon编写了代码,但我不确定如何使用XML

这是请求代码:

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会更好。所以,这个代码会像一个符咒一样工作。我在所有项目中都使用它。