您的位置:首页 > 其它

2003年制定的软件“评审方案”

2010-07-12 14:33 162 查看
本文出自 “IT徐胖子的专栏” 博客,请务必保留此出处/article/4125587.html

一、项目背景

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

二、实例代码Web项目
/**

* 新闻业务类

*

* @author 徐越

*

*/

publicclass 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 徐越

*

*/

publicclass ListServlet extends HttpServlet

{

privatestaticfinallong serialVersionUID = 1L;

private VideoNewsService vs = new VideoNewsServiceImpl();

protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

{

doPost(request, response);

}

protectedvoid 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" %><?xmlversion="1.0"encoding="UTF-8"?>

<videoNews>

<c:forEachitems="${xmlnews}"var="n">

<newsid="${n.id }">

<title>${n.title }</title>

<length>${n.timeLength }</length>

</news>

</c:forEach>

</videoNews>

Android项目
publicclass 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中即可。本文出自 “IT徐胖子的专栏” 博客,请务必保留此出处/article/4125587.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: