`
wsql
  • 浏览: 11887368 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Android开发17——获取网络资源之XML数据

 
阅读更多

一、项目背景
在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据。

本文获取web项目返回的XML数据。

二、实例代码

Web项目

/**
 * 新闻业务类
 * 
 * @author 徐越
 * 
 */
public class VideoNewsServiceImpl implements VideoNewsService
{
	public List<VideoNews> readNews()
	{
		List<VideoNews> lst = new ArrayList<VideoNews>();
		lst.add(new VideoNews(1, "喜洋洋", 20));
		lst.add(new VideoNews(2, "变形金刚", 10));
		lst.add(new VideoNews(3, "功夫熊猫", 20));
		return lst;
	}
}

/**
 * 新闻Servlet
 * 
 * @author 徐越
 * 
 */
public class ListServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;
	private VideoNewsService vs = new VideoNewsServiceImpl();

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		List<VideoNews> news = vs.readNews();
		request.setAttribute("xmlnews", news);
		request.getRequestDispatcher("/WEB-INF/pages/newsxml.jsp").forward(request, response);
	}
}
<%@ page language="java" contentType="text/xml; charset=utf-8" pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><?xml version="1.0" encoding="UTF-8"?>
<videoNews>
	<c:forEach items="${xmlnews}" var="n">
		<news id="${n.id }">
			<title>${n.title }</title>
			<length>${n.timeLength }</length>
		</news>
	</c:forEach>
</videoNews>

Android项目

public class VideoNewsServiceImpl implements VideoNewsService
{
	/**
	 * 获取最新视频资讯,从XML文件中,比较常用
	 */
	public List<VideoNews> getNewsFromXML() throws Exception
	{
		List<VideoNews> lst = new ArrayList<VideoNews>();
		String path = "http://xxx.xxx.xxx.xxx:8080/web/ListServlet";
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setReadTimeout(5000);
		conn.setRequestMethod("GET");
		if (200 == conn.getResponseCode())
		{
			InputStream instream = conn.getInputStream();
			lst = parseXML(instream);
		}
		return lst;
	}

	/**
	 * 解析XML
	 */
	private List<VideoNews> parseXML(InputStream instream) throws Exception
	{
		List<VideoNews> lst = null;
		VideoNews vn = null;
		// 利用ANDROID提供的API快速获得pull解析器
		XmlPullParser pullParser = Xml.newPullParser();
		// 设置需要解析的XML数据
		pullParser.setInput(instream, "UTF-8");
		// 取得事件
		int event = pullParser.getEventType();
		// 若为解析到末尾,文档结束
		while (event != XmlPullParser.END_DOCUMENT)
		{
			String nodeName = pullParser.getName();
			switch (event)
			{
				// 文档开始
				case XmlPullParser.START_DOCUMENT:
					lst = new ArrayList<VideoNews>();
					break;
				// 标签开始
				case XmlPullParser.START_TAG:
					if ("news".equals(nodeName))
					{
						vn = new VideoNews();
						Integer id = Integer.valueOf(pullParser.getAttributeValue(0));
						vn.setId(id);
					}
					if ("title".equals(nodeName))
					{
						String title = pullParser.nextText();
						vn.setTitle(title);
					}
					if ("length".equals(nodeName))
					{
						Integer length = Integer.valueOf(pullParser.nextText());
						vn.setTimeLength(length);
					}
					break;
				// 标签结束
				case XmlPullParser.END_TAG:
					if ("news".equals(nodeName))
					{
						lst.add(vn);
						vn = null;
					}
					break;
			}
			// 下一个标签
			event = pullParser.next();
		}
		return lst;
	}
}

最后把得到的数据绑定到ListView中即可。

分享到:
评论

相关推荐

    安卓Android源码——比较通用的xml解析方法.rar

    在Android系统中,XML文件被广泛应用于资源配置、布局定义以及网络数据解析等方面。本资料包“安卓Android源码——比较通用的xml解析方法”将深入探讨在Android平台上解析XML的多种方法。 1. DOM解析器(Document ...

    Android XML解析——Sax解析XML

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它用于存储和传输结构化数据。XML解析是将XML文档转换为应用程序可以处理的数据的过程。本篇文章将重点讨论Android中的SAX(Simple ...

    Android 开发入门 —— 环境搭建

    这些都是开发Android应用的基础,掌握这些知识后,你便可以进一步深入学习Android编程,如布局设计、组件使用、数据存储、网络通信等更高级的主题。持续实践和学习,你将逐渐成长为一名熟练的Android开发者。

    Android源码——ReadXmlByPull 使用Pull解析Xml文件.zip

    在Android开发中,处理XML数据是一项常见的任务,无论是解析服务器返回的数据还是读取本地资源,XML解析库都扮演着重要角色。本主题将深入探讨如何使用Android中的Pull解析器(Pull Parser)来读取和解析XML文件。...

    解析Google Android SDK——智能手机开发范例手册-下载代码

    总的来说,《解析Google Android SDK——智能手机开发范例手册》覆盖了Android开发的多个重要方面,从基础环境到高级技术,为开发者提供了全面的学习资源。通过深入研究这些章节,开发者不仅可以构建功能丰富的...

    Android XML解析—— Pull解析XML(待完善)

    在实际开发中,如Android的布局文件解析、配置文件读取或者从网络获取XML数据时,都可以使用Pull解析器进行处理。由于其高效和轻量级的特性,尤其在资源有限的环境中,Pull解析是首选的XML处理方式。 在博客链接...

    Android源码——获取Gps信息的程序源码.zip

    这份"Android源码——获取Gps信息的程序源码.zip"压缩包提供了实现这一功能的示例代码,对于学习Android GPS编程非常有帮助。我们将深入探讨如何在Android中获取GPS数据以及涉及的关键知识点。 首先,Android系统...

    安卓Android源码——比较通用的xml解析方法.zip

    本资源“安卓Android源码——比较通用的xml解析方法.zip”显然聚焦于探讨在Android平台上解析XML的不同方法。这里我们将深入探讨两种主要的XML解析技术:SAX(Simple API for XML)和DOM(Document Object Model),...

    安卓Android源码——安卓Android学习——数据存储.zip

    本资料包“安卓Android源码——安卓Android学习——数据存储.zip”(实际应为rar文件)包含了关于安卓数据存储的学习资源,旨在帮助开发者深入理解这一核心概念。 1. **Shared Preferences** Shared Preferences是...

    Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例

    在本章节中,“Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例”主要聚焦于Android应用程序开发中的一个实际应用场景——构建一个RSS阅读器。这个实例将帮助初学者理解如何将Android SDK的...

    Android项目实战——手机安全卫士开发案例解析word版

    在本《Android项目实战——手机安全卫士开发案例解析》中,我们将深入探讨如何构建一个功能完备的手机安全应用,以此来提升用户设备的安全性与性能。这个项目不仅涵盖了Android应用开发的基础知识,还涉及到了高级...

    安卓Android源码——从网络上获取图片.zip

    在安卓(Android)平台上开发应用时,经常需要从网络上获取图片资源,这涉及到网络编程、图片处理和UI渲染等多个技术领域。这份“安卓Android源码——从网络上获取图片.zip”压缩包很可能是包含了一个示例项目或代码...

    Android源码——获取Gps信息的程序源码.7z

    这份"Android源码——获取Gps信息的程序源码.7z"压缩包提供了实现这一功能的源代码示例,有助于开发者更好地理解和实践如何在Android应用程序中获取GPS定位数据。 首先,我们需要了解Android中的LocationManager...

    安卓Android源码——获取Gps信息的程序源码.zip

    这个“安卓Android源码——获取Gps信息的程序源码.zip”文件包含了一个实例,展示了如何在Android应用中获取GPS定位信息。通过分析这个源码,我们可以学习到以下几个关键知识点: 1. **AndroidManifest.xml配置**:...

    Android开发与应用——张荣,原书配套课件

    这是Android开发与应用,原书配套的课件,作者张荣,目录如下。 第1章 Android简介 1.1 手机操作系统 1.2 Android起源 1.3 Android特征 1.4 Android体系结构 1.4.1 应用层 1.4.2 应用框架层 1.4.3 ...

    开源Android离线地图开发——Bigplanet

    在Android平台上进行离线地图开发是一项重要的技术,它允许用户在无网络连接的情况下查看和使用地图数据。Bigplanet是一款开源的Android离线地图解决方案,它为开发者提供了丰富的功能和自定义选项,使得创建本地化...

    Android项目之——漂亮的平台书架.rar

    总的来说,这个项目涵盖了Android应用开发中的多个核心知识点,包括UI设计、数据管理、网络通信等,对于想要学习Android开发或提升UI设计技巧的人来说,是一个非常有价值的参考资料。通过实际操作和研究这个项目,...

Global site tag (gtag.js) - Google Analytics