`
wsql
  • 浏览: 11886096 次
  • 性别: 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解析——Sax解析XML

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

    Android 开发入门 —— 环境搭建

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

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

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

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

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

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

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

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

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

    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中文翻译组——Android中文API——android.widget合集(中)

    在Android应用开发中,`android.widget`包是核心组件之一,包含了众多用于构建用户界面的控件。这个合集特别适合初学者深入理解和掌握Android控件的使用。在这个合集中,我们可以找到各种常见且重要的控件,它们是...

    Google Android SDK开发范例大全——示例代码

    《Google Android SDK开发范例大全——示例代码》是一份针对Android应用开发者的宝贵资源,主要涵盖08至10章节的内容。这份资料通过丰富的示例代码,详细讲解了Android SDK中的关键技术和实践方法,旨在帮助开发者...

    android实战 网络图片浏览器(android studio源程序工程)

    在Android开发中,构建一个网络图片浏览器是一项常见的任务,它涉及到网络请求、图片加载优化以及UI设计等多个方面。本项目“android实战 网络图片浏览器”是一个基于Android Studio的源代码实例,专为初学者设计,...

    Android通过Webservices访问网络资源

    在Android开发中,访问网络资源是一项常见的任务,尤其当我们需要从服务器获取数据或者与服务器进行交互时。Webservices是一种常见的服务接口,如SOAP(Simple Object Access Protocol)或REST(Representational ...

    免费 android 应用 源代码——记事本

    标题中的“免费 android 应用 源代码——记事本”表明这是一份关于Android应用开发的资源,特别是一个记事本应用的源代码。记事本应用是Android平台上常见的学习示例,它通常涉及到基础的用户界面设计、数据存储以及...

    分享我的第一个Android小游戏——猜拳游戏

    【Android小游戏开发详解——猜拳游戏】 Android平台为开发者提供了丰富的工具和资源,使得开发一款简单有趣的小游戏变得轻松易行。本篇文章将基于“猜拳游戏”这一项目,深入探讨Android开发的基础知识,以及如何...

    Android经典项目开发实战 PDF+源码

    通过这个资源包,开发者不仅可以学习到Android开发的基本技术,还能了解到实际项目中的问题解决策略,对于提升实战技能和解决工作中遇到的问题具有极大的帮助。同时,源码的分析和研究也有助于提升阅读和理解他人...

    Android中文翻译组——Android中文合集(6)

    综上所述,"Android中文翻译组——Android中文合集(6)"包含的资料涉及了Android开发的各个方面,是学习和提升Android技能的重要资源。通过深入研究和实践这些知识点,开发者能够更好地理解和开发Android应用。

    Android小游戏——四棋

    通过这个四棋游戏项目,开发者不仅可以锻炼编程技能,还能提升对Android应用生命周期、UI设计、数据存储和网络通信等多方面知识的理解和实践能力。对于初学者来说,这是一个很好的动手实践项目。

    Android网络下的XML解析和生成.

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,尤其是在网络通信中。本章节将深入探讨Android环境下如何进行XML的解析和生成,这对于理解数据交互、API调用以及本地数据存储至关...

Global site tag (gtag.js) - Google Analytics