`
webdev2014
  • 浏览: 678531 次
文章分类
社区版块
存档分类
最新评论

获取服务器的xml文件并解析

 
阅读更多

获取服务器上的文件,在开发过程中应该是不陌生的一中操作,可以说是频繁的不能在频繁了,我使用的是Android应用去获取服务器上的文件,这里我也就是将这些代码保存在这,方便以后忘记的时候,回头还有得看,里面的命名是自己随便弄的,英语不好,不知道写什么。下面用代码说话还是比较实在

实现效果图:

获取网络数据,这里用的HttpClient方式来请求网络数据,

public class RequestData {
	/**
	 * get请求
	 * @throws Exception 
	 */
	public static InputStream getRequest(String path) throws Exception{
		//创建HttpClient对象
		HttpClient client=new DefaultHttpClient();
		//创建get请求
		HttpGet get=new HttpGet(path);
		//执行请求并获取响应
		HttpResponse response=client.execute(get);
		//如果响应码为200就表示请求成功
		if(response.getStatusLine().getStatusCode()==200){
			//获取InputStream对象
			InputStream is=response.getEntity().getContent();
			return is;
		}
		return null;
	}
}

解析xml工具类,用的是DOM解析

public class ParseXmlService {
	/**
	 * 解析xml
	 * @throws Exception 
	 */
	public static HashMap<String, String> parseXml(InputStream is) throws Exception{
		//创建HashMap对象
		HashMap<String, String> map=new HashMap<String, String>();
		//创建解析器工厂类
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		//创建DocumentBuilder对象
		DocumentBuilder builder=factory.newDocumentBuilder();
		//创建Document对象
		Document document=builder.parse(is);
		//获取根节点
		Element root=document.getDocumentElement();
		//获取所有子节点
		NodeList childNodes=root.getChildNodes();
		//变量子节点
		for(int i=0;i<childNodes.getLength();i++){
			Node childNode=childNodes.item(i);
			if(childNode.getNodeType()==Node.ELEMENT_NODE){
				//获取节点
				Element childElement=(Element) childNode;
				//版本号
				if("version".equals(childElement.getNodeName())){
					map.put("version", childElement.getFirstChild().getNodeValue());
				}
				//名称
				else if("name".equals(childElement.getNodeName())){
					map.put("name", childElement.getFirstChild().getNodeValue());
				}
				//下载路径
				else if("url".equals(childElement.getNodeName())){
					map.put("url", childElement.getFirstChild().getNodeValue());
				}
			}
		}
		return map;
	}
}


这两个类就完成了请求数据与解析,接下来就在主程序中将解析的信息显示到界面的操作

public class MainActivity extends Activity {
	//声明控件对象
	private Button parseXml;
	private TextView info;
	
	//构建请求路径
	String path="http://192.168.1.19:8080/zeng/version.xml";
	//创建消息处理机制
	private Handler handler=new Handler(){
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case 0x11:
				//获取HashMap对象
				HashMap<String, String> map=(HashMap<String, String>) msg.obj;
				//设置TextView信息
				info.setText("版本号:"+map.get("version")+"\n应用名称:"+map.get("name")+"\n下载路径:"+map.get("url"));
				break;

			default:
				break;
			}
		};
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设置无标题
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		//获取控件对象
		parseXml=(Button) this.findViewById(R.id.btn_parse);
		info=(TextView) this.findViewById(R.id.tv_info);

		//为按钮绑定点击事件
		parseXml.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				new Thread(){
					public void run() {
						//获取InputStream对象
						InputStream is;
						try {
							is = RequestData.getRequest(path);
							//解析获取的xml
							HashMap<String, String> map=ParseXmlService.parseXml(is);
							//创建Message
							Message msg=new Message();
							msg.what=0x11;
							msg.obj=map;
							//将Message装载到Handler中
							handler.sendMessage(msg);
						} catch (Exception e) {
							e.printStackTrace();
						}
					};
				}.start();
			}
		});
	}
}

当然还有一个最中要的,就是要到AndroidManifest.xml文件中配置访问网络的权限

<uses-permission android:name="android.permission.INTERNET"/>

这样才算的完成整个操作,代码就这么多咯,将就将就看,呵呵

分享到:
评论

相关推荐

    Javascript解析服务器端XML文件

    Javascript解析服务器端XML文件,成为一个树形菜单,自己工作中需要写的,想和同志们一起探讨探讨

    通过网络获取xml文件使用pull解析得到服务器中的信息(新闻客户端)

    通过网络获取xml文件,使用pull解析该文件得到服务器中的信息;

    ajax获取服务器以xml形式输出省市数据,并获取数据绑定前台下拉框和实现联动

    NULL 博文链接:https://lichaobao.iteye.com/blog/1949419

    复杂XML的解析及组装

    此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,XmlNode以树形结构进行XML的数据封装,使用的时候按照树形结构进行数据的获取。(如有问题请...

    天气预报,xml解析

    获取服务器端的天气预报的数据,利用android的xml pull 解析技术,解析xml文件,并将信息显示给用户。

    XmlPull解析XML

    Pull解析XML:Android从服务器端获取XMl文件输入流,并用Pull方式解析,附被解析的XMl文档

    SAX解析XML源码

    SAX解析XML源码:安卓客户端程序,通过HTTP协议从服务器端获取XML文件,然后解析并输出到控制台

    Android解析xml文件获取网络数据http请求,带Fragment框架,图片缓存本地

    Android解析xml文件获取网络数据http请求,带Fragment框架,图片缓存本地

    ESStatistikParser:ESStatistikListeModtag.xml的XML解析器

    该应用程序将以某种有效的方式拆分并解析一个75 GiB XML文件,其中包含有关丹麦已注册车辆的车辆信息。 在8核计算机上,它会在大约8分钟内解析文件,并使用不到50 MB的RAM来执行此操作。 如何? 这个过程有点简单...

    XML高级编程pdf

    8.5.3 问题:Bare文档片段并不总 是充分的 8.5.4 解决办法:环境信息 8.5.5 回顾实例 8.5.6 如何传输片段 8.5.7 小结 8.6 查询 8.6.1 什么是查询语言 8.6.2 关系型数据库和XML文档之间的区别 8.6.3 XML查询...

    XML 高级编程(高清版)

    8.5.3 问题:Bare文档片段并不总 是充分的 8.5.4 解决办法:环境信息 8.5.5 回顾实例 8.5.6 如何传输片段 8.5.7 小结 8.6 查询 8.6.1 什么是查询语言 8.6.2 关系型数据库和XML文档之间的区别 8.6.3 XML查询...

    XML高级编程 (Extensible Markup Language)

    8.5.3 问题:Bare文档片段并不总 是充分的 8.5.4 解决办法:环境信息 8.5.5 回顾实例 8.5.6 如何传输片段 8.5.7 小结 8.6 查询 8.6.1 什么是查询语言 8.6.2 关系型数据库和XML文档之间的区别 8.6.3 XML查询...

    XML高级编程

    8.5.3 问题:Bare文档程序段并不总 是充分的 281 8.5.4 解决办法:环境信息 283 8.5.5 回顾实例 285 8.5.6 如何传输程序段 287 8.5.7 小结 289 8.6 查询 289 8.6.1 什么是查询语言 289 8.6.2 关系型数据库和XML文档...

    简介Objective-C解析XML与JSON数据格式的方法

    解析XML ...需要解析的xml文件如下,users.xml &lt;?xml version=1.0 encoding=UTF-8?&gt; 用户信息 芳仔小脚印 &lt;age&gt;10 &lt;school&gt;JiangSu University 毒虫 &lt;age&gt;22 &lt;school&gt;NanJing Un

    xml浅学笔记

    XML可以保存成独立的 ***.xml 的文件,也可以以字符串的形式出现(服务器端生产) 1、XML的最顶端是XML的声明 &lt;?xml version="1.0" encoding="utf-8" ?&gt; 2、XML标记的语法 1、XML标记必须成对出现 2、...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或...

    西工大服务计算实验2-2_XML

    编写一个C/S结构的分布式程序(可采用socket方式),客户端(client)通过发送获取西安天气的XML描述文档给服务器端(server),服务器端接收到此XML文档,解析XML文档,并根据XML文档描述的内容,产生响应数据,并...

    ajax遍历xml文档的方法

    本文实例讲述了ajax遍历xml文档的方法。...前面中的例子是从XMLHttpRequest对象获取服务器响应,并使用XMLHttpRequest对象的responseText属性将响应获取为文本。 这次我们来使用XMLHttpRequest对象的res

    Android检测新版本自动更新(通知栏显示下载进度)

    获取服务器端XML文件,解析XML获取到最新版本号,与当前软件版本号进行对比,发现不一样则提示更新。 涉及到内容点: 1.远程获取XML并分析XML内容 2.远程下载文件并打开 3.下载时通知栏显示下载进度

Global site tag (gtag.js) - Google Analytics