网络通信值获取和解析xml和json

1..获取网络XML
使用AsyncHttpClient和TextHttpResponseHandler获取文本数据
使用XmlPullParser和StringReader解析XML生成JavaBean
2.获取网络JSON
使用AsyncHttpClient和JsonHttpResponseHandler获取JSONArray

使用JSONArray和JSONObject解析JSON生成JavaBean

package com.itheima.netxml;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;

import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.TextHttpResponseHandler;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	//button点击处理函数;获取xml文档;
	public void getXml(View v) {
		new AsyncHttpClient().get("http://192.168.1.100/Chat/persons.xml", new TextHttpResponseHandler() {
			public void onSuccess(int statusCode, Header[] headers, String responseString) {
				List<Person> persons = parseXml(responseString);//将xml字符串转换解析为bean集合;
				for (Person p : persons) 
					System.out.println(p);
				Toast.makeText(getApplicationContext(), "获取XML成功", Toast.LENGTH_SHORT).show();
			}
			public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
				Toast.makeText(getApplicationContext(), "获取失败了哦亲。。。。", 0).show();

			}
		});
	}
	
	//获取json数据;JsonHttpResponseHandler处理json数据;
	public void getJson(View v) {
		new AsyncHttpClient().get("http://192.168.1.251:8080/WebServer/persons.js", new JsonHttpResponseHandler() {
			public void onSuccess(int statusCode, Header[] headers, JSONArray arr) {
				try {
					for (int i = 0; i < arr.length(); i++ ) {	// 遍历JSONArray
						JSONObject obj = arr.getJSONObject(i);	// 得到每一个JSONObject
						int id = obj.getInt("id");				// 获取每个JSONObject中的数据, 封装成Person
						String name = obj.getString("name");
						int age = obj.getInt("age");
						Person p = new Person(id, name, age);
						System.out.println(p);
					}
					Toast.makeText(getApplicationContext(), "获取JSON成功!!!", Toast.LENGTH_SHORT).show();
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		});
		
		/*//TextHttpResponseHandler处理json;
		 *
		new AsyncHttpClient().get("http://192.168.1.251:8080/WebServer/persons.js", new TextHttpResponseHandler() {
			public void onSuccess(int statusCode, Header[] headers, String responseString) {
				List<Person> persons = parseJson(responseString);
				for (Person p : persons) 
					System.out.println(p);
				Toast.makeText(getApplicationContext(), "获取JSON成功", Toast.LENGTH_SHORT).show();
			}
			public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
			}
		});
		*/
	}
	
	//解析xml的函数;
	@SuppressWarnings("unused")
	private List<Person> parseJson(String json) {
		List<Person> persons = new ArrayList<Person>();
		try {
			JSONArray arr = new JSONArray(json);		// 把字符串封装成一个JSONArray
			for (int i = 0; i < arr.length(); i++ ) {	// 遍历JSONArray
				JSONObject obj = arr.getJSONObject(i);	// 得到每一个JSONObject
				
				int id = obj.getInt("id");				// 获取每个JSONObject中的数据, 封装成Person
				String name = obj.getString("name");
				int age = obj.getInt("age");
				
				Person p = new Person(id, name, age);
				persons.add(p);
			}
			
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return persons;
	}
	
	//解析xml的函数;
	private List<Person> parseXml(String xml) {
		List<Person> persons = new ArrayList<Person>();
		try {
			//创建解析器;
			XmlPullParser parser = Xml.newPullParser();
			parser.setInput(new StringReader(xml));
			Person p = null;
			//根据事件来解析;
			for (int type = parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next()) {
				if (type == XmlPullParser.START_TAG) {
					if ("person".equals(parser.getName())) {		// 如果开始的是person, 创建对象, 获取id数据
						String id = parser.getAttributeValue(0);
						p = new Person();
						p.setId(Integer.parseInt(id));
						persons.add(p);
					} else if ("name".equals(parser.getName())) {	// 如果开始的是name, 获取下一个文本
						String name = parser.nextText();
						p.setName(name);
					} else if ("age".equals(parser.getName())) {	// 如果开始的是age, 获取下一个文本
						String age = parser.nextText();
						p.setAge(Integer.parseInt(age));
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return persons;
	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值