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
一、项目背景
在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
相关文章推荐
- “Velocity”-出自微软的分布式缓存方案
- 开源DIGG软件PBDigg2.0的修改(六):让“内容原文地址”可以输入别的内容
- “软件宝宝”出生前,安全系列文章(一)
- 05-软件XX(设计方案、需求、概要...)评审报告
- “软件宝宝”的安全成长史
- Linux下替代硕鼠FLV下载软件方案
- “有限的访问权限”问题一解
- 基于Dragonboard 410c的自动感应调色灯软件方案设计
- Sql server 备份还原后出现“受限制用户”问题
- 软件在线升级设计方案及演变过程分析
- 高可靠性软件测试方案探讨
- 初始制定软件测试计划
- 企业内部实现软件测试自动化的方案探讨
- 软件需求设计评审之八项注意
- 软件测试技术---代码检查,走查与评审
- 国外开始制定间谍软件公共标准
- “Chrome Web Store 目前无法获取该应用程序”解决办法
- 再试答一道招聘测试题:关于“客户即上帝”理解
- 应用软件设计模型 - 日志组件设计方案