Android开发17——获取网络资源之XML数据

简介:

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

本文获取web项目返回的XML数据。

 

 

二、实例代码

 

Web项目

/**
 * 新闻业务类
 * 
 * @author xy
 * 
 */
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 xy
 * 
 */
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中即可。

目录
打赏
0
0
0
0
7
分享
相关文章
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
59 22
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
46 14
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
59 12
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
67 15
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
217 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。
uniapp-网络数据请求全教程
这篇文档介绍了如何在uni-app项目中使用第三方包发起网络请求
143 3
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
147 1
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)