美文网首页
上海天气JSON解析示例(PULL)

上海天气JSON解析示例(PULL)

作者: 古早味蛋糕 | 来源:发表于2022-09-04 12:10 被阅读0次
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());
}

相关文章

网友评论

      本文标题:上海天气JSON解析示例(PULL)

      本文链接:https://www.haomeiwen.com/subject/jsfmnrtx.html