一、项目背景
在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文件被广泛应用于资源配置、布局定义以及网络数据解析等方面。本资料包“安卓Android源码——比较通用的xml解析方法”将深入探讨在Android平台上解析XML的多种方法。 1. DOM解析器(Document ...
在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它用于存储和传输结构化数据。XML解析是将XML文档转换为应用程序可以处理的数据的过程。本篇文章将重点讨论Android中的SAX(Simple ...
这些都是开发Android应用的基础,掌握这些知识后,你便可以进一步深入学习Android编程,如布局设计、组件使用、数据存储、网络通信等更高级的主题。持续实践和学习,你将逐渐成长为一名熟练的Android开发者。
在Android开发中,处理XML数据是一项常见的任务,无论是解析服务器返回的数据还是读取本地资源,XML解析库都扮演着重要角色。本主题将深入探讨如何使用Android中的Pull解析器(Pull Parser)来读取和解析XML文件。...
总的来说,《解析Google Android SDK——智能手机开发范例手册》覆盖了Android开发的多个重要方面,从基础环境到高级技术,为开发者提供了全面的学习资源。通过深入研究这些章节,开发者不仅可以构建功能丰富的...
在实际开发中,如Android的布局文件解析、配置文件读取或者从网络获取XML数据时,都可以使用Pull解析器进行处理。由于其高效和轻量级的特性,尤其在资源有限的环境中,Pull解析是首选的XML处理方式。 在博客链接...
这份"Android源码——获取Gps信息的程序源码.zip"压缩包提供了实现这一功能的示例代码,对于学习Android GPS编程非常有帮助。我们将深入探讨如何在Android中获取GPS数据以及涉及的关键知识点。 首先,Android系统...
本资源“安卓Android源码——比较通用的xml解析方法.zip”显然聚焦于探讨在Android平台上解析XML的不同方法。这里我们将深入探讨两种主要的XML解析技术:SAX(Simple API for XML)和DOM(Document Object Model),...
本资料包“安卓Android源码——安卓Android学习——数据存储.zip”(实际应为rar文件)包含了关于安卓数据存储的学习资源,旨在帮助开发者深入理解这一核心概念。 1. **Shared Preferences** Shared Preferences是...
在本章节中,“Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例”主要聚焦于Android应用程序开发中的一个实际应用场景——构建一个RSS阅读器。这个实例将帮助初学者理解如何将Android SDK的...
在本《Android项目实战——手机安全卫士开发案例解析》中,我们将深入探讨如何构建一个功能完备的手机安全应用,以此来提升用户设备的安全性与性能。这个项目不仅涵盖了Android应用开发的基础知识,还涉及到了高级...
在安卓(Android)平台上开发应用时,经常需要从网络上获取图片资源,这涉及到网络编程、图片处理和UI渲染等多个技术领域。这份“安卓Android源码——从网络上获取图片.zip”压缩包很可能是包含了一个示例项目或代码...
这份"Android源码——获取Gps信息的程序源码.7z"压缩包提供了实现这一功能的源代码示例,有助于开发者更好地理解和实践如何在Android应用程序中获取GPS定位数据。 首先,我们需要了解Android中的LocationManager...
这个“安卓Android源码——获取Gps信息的程序源码.zip”文件包含了一个实例,展示了如何在Android应用中获取GPS定位信息。通过分析这个源码,我们可以学习到以下几个关键知识点: 1. **AndroidManifest.xml配置**:...
这是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应用开发中的多个核心知识点,包括UI设计、数据管理、网络通信等,对于想要学习Android开发或提升UI设计技巧的人来说,是一个非常有价值的参考资料。通过实际操作和研究这个项目,...