一、项目背景
在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(eXtensible Markup Language)是一种常用的数据交换格式,它用于存储和传输结构化数据。XML解析是将XML文档转换为应用程序可以处理的数据的过程。本篇文章将重点讨论Android中的SAX(Simple ...
这些都是开发Android应用的基础,掌握这些知识后,你便可以进一步深入学习Android编程,如布局设计、组件使用、数据存储、网络通信等更高级的主题。持续实践和学习,你将逐渐成长为一名熟练的Android开发者。
总的来说,《解析Google Android SDK——智能手机开发范例手册》覆盖了Android开发的多个重要方面,从基础环境到高级技术,为开发者提供了全面的学习资源。通过深入研究这些章节,开发者不仅可以构建功能丰富的...
在实际开发中,如Android的布局文件解析、配置文件读取或者从网络获取XML数据时,都可以使用Pull解析器进行处理。由于其高效和轻量级的特性,尤其在资源有限的环境中,Pull解析是首选的XML处理方式。 在博客链接...
在本章节中,“Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例”主要聚焦于Android应用程序开发中的一个实际应用场景——构建一个RSS阅读器。这个实例将帮助初学者理解如何将Android SDK的...
在本《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离线地图解决方案,它为开发者提供了丰富的功能和自定义选项,使得创建本地化...
在Android应用开发中,`android.widget`包是核心组件之一,包含了众多用于构建用户界面的控件。这个合集特别适合初学者深入理解和掌握Android控件的使用。在这个合集中,我们可以找到各种常见且重要的控件,它们是...
《Google Android SDK开发范例大全——示例代码》是一份针对Android应用开发者的宝贵资源,主要涵盖08至10章节的内容。这份资料通过丰富的示例代码,详细讲解了Android SDK中的关键技术和实践方法,旨在帮助开发者...
在Android开发中,构建一个网络图片浏览器是一项常见的任务,它涉及到网络请求、图片加载优化以及UI设计等多个方面。本项目“android实战 网络图片浏览器”是一个基于Android Studio的源代码实例,专为初学者设计,...
在Android开发中,访问网络资源是一项常见的任务,尤其当我们需要从服务器获取数据或者与服务器进行交互时。Webservices是一种常见的服务接口,如SOAP(Simple Object Access Protocol)或REST(Representational ...
标题中的“免费 android 应用 源代码——记事本”表明这是一份关于Android应用开发的资源,特别是一个记事本应用的源代码。记事本应用是Android平台上常见的学习示例,它通常涉及到基础的用户界面设计、数据存储以及...
【Android小游戏开发详解——猜拳游戏】 Android平台为开发者提供了丰富的工具和资源,使得开发一款简单有趣的小游戏变得轻松易行。本篇文章将基于“猜拳游戏”这一项目,深入探讨Android开发的基础知识,以及如何...
通过这个资源包,开发者不仅可以学习到Android开发的基本技术,还能了解到实际项目中的问题解决策略,对于提升实战技能和解决工作中遇到的问题具有极大的帮助。同时,源码的分析和研究也有助于提升阅读和理解他人...
综上所述,"Android中文翻译组——Android中文合集(6)"包含的资料涉及了Android开发的各个方面,是学习和提升Android技能的重要资源。通过深入研究和实践这些知识点,开发者能够更好地理解和开发Android应用。
通过这个四棋游戏项目,开发者不仅可以锻炼编程技能,还能提升对Android应用生命周期、UI设计、数据存储和网络通信等多方面知识的理解和实践能力。对于初学者来说,这是一个很好的动手实践项目。
在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,尤其是在网络通信中。本章节将深入探讨Android环境下如何进行XML的解析和生成,这对于理解数据交互、API调用以及本地数据存储至关...