HttpURLconection的获取XML的pull解析

来源:互联网 发布:推荐卖真蜂蜜的淘宝店 编辑:程序博客网 时间:2024/06/06 02:30
<pre name="code" class="java">//HttpURLconection获得数据源
public void readContentFromGet() throws IOException {String path = "http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=功能";// 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码String getURL = path;URL getUrl = new URL(path);// 根据拼凑的URL,打开连接,URL.openConnection函数会根据 URL的类型,// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnectionHttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();// 进行连接,但是实际上get request要在下一句的 connection.getInputStream()函数中才会真正发到// 服务器connection.connect();// 获取包含数据的输入流InputStream inputStream = connection.getInputStream();List<News> xmlParse = xmlParse(inputStream);Message msg = Message.obtain();msg.obj = xmlParse;mHandler.sendMessage(msg);// 断开连接connection.disconnect();}
<pre name="code" class="java">private List<News> xmlParse(InputStream is) {List<News> newslist = null;News news = null;XmlPullParser parser = Xml.newPullParser();try {parser.setInput(is, "UTF-8");int eventType = parser.getEventType();// 产生第一个事件while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件switch (eventType) {case XmlPullParser.START_DOCUMENT:newslist = new ArrayList<News>();break;case XmlPullParser.START_TAG:String name = parser.getName();// 获取解析器当前指向的元素的名称if ("news".equals(name)) {news = new News();}if (news != null) {if ("title".equals(name)) {news.setTitle(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值}if ("body".equals(name)) {news.setBody(parser.nextText());}}break;case XmlPullParser.END_TAG:if ("news".equals(parser.getName())) {newslist.add(news);news = null;}break;}eventType = parser.next();}} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return newslist;}



                                             
0 0
原创粉丝点击