Android 中使用XmlPullParser解析网络XML文件

package cn.llbb.testpullxml;

import android.support.v7.app.ActionBarActivity;
import android.util.Log;

import java.io.IOException;
import java.io.StringReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.os.Bundle;
import android.view.*;
import android.view.View.*;
import android.widget.*;

public class MainActivity extends ActionBarActivity implements OnClickListener{

	private Button btn_send = null;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn_send = (Button) findViewById(R.id.btn_send);
		btn_send.setOnClickListener(this);
	}

	public void onClick(View v) {
		switch(v.getId()){
		case R.id.btn_send:
			sendRequestWithHttpClient();
			break;
		default:

			break;
		}
	}

	private void sendRequestWithHttpClient(){
		new Thread(new Runnable(){

			public void run() {

				try {
					HttpClient client = new DefaultHttpClient();
					HttpGet httpget = new HttpGet("http://192.168.30.77:8000/static/css/text.xml");
					HttpResponse response = client.execute(httpget);

					if(response.getStatusLine().getStatusCode() == 200){
						HttpEntity entity = response.getEntity();
						String response_txt = EntityUtils.toString(entity,"utf-8");
						Log.d("response", "get response successed");
						parseXMLwithPull(response_txt);
					}
					else{
						Log.d("response", "get response failed");
					}

				} catch (ClientProtocolException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}).start();
	}

	private void parseXMLwithPull(String xmldata){
		XmlPullParserFactory factory;
		try {
			factory = XmlPullParserFactory.newInstance();
			XmlPullParser xmlpullparser = factory.newPullParser();
			xmlpullparser.setInput(new StringReader(xmldata));
			int eventType = xmlpullparser.getEventType(); 
			String id = "";
			String name = "";
			String version = "";
			while(eventType != xmlpullparser.END_DOCUMENT){
				String nodeName = xmlpullparser.getName();
				switch(eventType){
				case XmlPullParser.START_TAG:
					if("id".equals(nodeName)){
						try {
							id = xmlpullparser.nextText();
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}else if("name".equals(nodeName)){
						try {
							name = xmlpullparser.nextText();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}else if("version".equals(nodeName)){
						try {
							version = xmlpullparser.nextText();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
					break;
				case XmlPullParser.END_TAG:
					if("app".equals(nodeName)){
						Log.d("id = ", id);
						Log.d("name = ", name);
						Log.d("version = ", version);

					}
					break;
				}
				try {
					eventType = xmlpullparser.next();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		} catch (XmlPullParserException e) {
			e.printStackTrace();
		}

	}

}
时间: 2024-10-12 02:56:32

Android 中使用XmlPullParser解析网络XML文件的相关文章

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

Android中如何提取和生成mp4文件

随着Android 4.4及以上版本的逐渐普及,Android 4.1引入的MediaExtractor类,以及Android 4.3引入的MediaMuxer类,终于可以开始正式地"发光发热"了. MediaMuxer类主要用于将音频和视频数据进行混合生成多媒体文件(如:mp4文件),而MediaExtractor则刚好相反,主要用于多媒体文件的音视频数据的分离. 本文将介绍如何利用Android SDK提供的MediaExtractor和MediaMuxer类来完成mp4文件的提取

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne

阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?

一.解析XML首先,Mybatis在初始化SqlSessionFactoryBean的时候,找到mapperLocations路径去解析里面所有的XML文件,这里我们重点关注两部分.1.创建SqlSourceMybatis会把每个SQL标签封装成SqlSource对象.然后根据SQL语句的不同,又分为动态SQL和静态SQL.其中,静态SQL包含一段String类型的sql语句:而动态SQL则是由一个个SqlNode组成. 假如我们有这样一个SQL: <select id="getUserB

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用中使用AsyncHttpClient来异步网络数据 http://blog.csdn.net/sdvch/article/details/13615605 Android中的几种网络请求方式详解,布布扣,bubuko.com

分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)

原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <students> <student> <name>John</name> <grade>B</grade> <age>12</age> </student> <student> <name>Mar

如何将数据库中的表导成XML文件

1.现将数据库中的信息读到DataTable中 2.用函数将DataTable转为string private string ConvertDataTableToXML(DataTable dt) { if (dt != null) { MemoryStream ms = null; XmlTextWriter XmlWt = null; try { ms = new MemoryStream(); XmlWt = new XmlTextWriter(ms, Encoding.Unicode);

Android技术14:Android中layout_weight属性解析

为了更好的对空间进行布局,在LinearLayout中使用layout_weight,然后对于这一属性,在有些书上或者Android的初学者直接认为layout_weight值越大,控件权重就越大,所占用的空间就越大或者layout_wight值越小,控件空间就越大.这两种都是片面的,没有真正认识到layout_weight含义以及如何布局.下面首先演示使用代码为什么会有这两种感觉. 1.演示权重成反比 LinearLayout设置水平布局,然后里面空间宽度为fill_parent,layout