通过HttpUrlConnection读取数据进行Pull解析

本文介绍了一种从HTTP请求中获取XML数据并使用Pull解析的方式进行解析的方法。该过程包括建立连接、获取输入流、设置解析器编码、初始化解析事件,并通过事件循环读取XML数据中的各标签内容。
URL url = new URL(strUrl);
            // 创建连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.connect();
            // 获得响应码
            int code = connection.getResponseCode();
            if (code == 200) {
                InputStream is = connection.getInputStream();
                // pull解析
                XmlPullParser xmlParser = Xml.newPullParser();
                // 设置编码
                xmlParser.setInput(is, "UTF-8");
                News n = null;
                // 获取数据类型
                int eventType = xmlParser.getEventType();
                while (eventType != XmlResourceParser.END_DOCUMENT) {
                    // 通过getName判断读到哪个标签,然后通过nextText()获取文本节点值,或通过getAttributeValue(i)获取属性节点值
                    String tagName = xmlParser.getName();
                    switch (eventType) {
                    case XmlPullParser.START_DOCUMENT:
                        list = new ArrayList<News>();

                        break;

                    case XmlPullParser.START_TAG:
                        // 如果新闻标签的开始我们需要创建News对象
                        if ("item".equalsIgnoreCase(tagName)) {
                            n = new News();
                        } else if ("title".equals(tagName)) {
                            n.setTitle(xmlParser.nextText());
                        } else if ("link".equals(tagName)) {
                            n.setLink(xmlParser.nextText());
                        } else if ("imgs".equals(tagName)) {
                            n.setImgs(xmlParser.nextText());
                        } else if ("copyright".equals(tagName)) {
                            n.setCopyright(xmlParser.nextText());
                        } else if ("pubDate".equals(tagName)) {
                            n.setPubDate(xmlParser.nextText());
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if ("item".equals(tagName)) {
                            list.add(n);
                            Log.e("info", "++++++" + n);
                            n = null;
                        }
                        break;
                    case XmlPullParser.END_DOCUMENT:

                        break;
                    }
                    eventType = xmlParser.next();
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值