【Android基礎知識】網絡獲取Xml文件並解析

從服務器獲取xml內容並解析

girls.xml

<?xml version="1.0" encoding="utf-8"?>
<girls>
	<girl>
		<name>tian</name>
		<age>12</age>
		<school>tianting</school>
	</girl>
	<girl>
		<name>di</name>
		<age>12</age>
		<school>龐各莊</school>
	</girl>
</girls>
xml解析類 Xmlparse.java

public class XmlParse extends Thread {
	String url;
	public XmlParse(String url){
		this.url = url;
	}
	@Override
	public void run() {
		
		try {
			//獲取xml並使用pull方式解析
			URL httpUrl = new URL(url);
			HttpURLConnection connection = (HttpURLConnection) httpUrl.openConnection();
			connection.setReadTimeout(3000);
			connection.setRequestMethod("GET");
			InputStream in = connection.getInputStream();
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			XmlPullParser parser = factory.newPullParser();
                        //讀取xml內容,以UTF-8的格式
			parser.setInput(in,"UTF-8");
			int eventType = parser.getEventType();
			List<Girls> girls = new ArrayList<Girls>();
			Girls girl = null;
                        //如果沒有到文檔的結尾就繼續解析
			while(eventType != XmlPullParser.END_DOCUMENT){
                                //獲取標籤名字
				String data = parser.getName();
				switch (eventType) {
                                //開始標籤
				case XmlPullParser.START_TAG:
					if("girl".equals(data)){
						girl = new Girls();
					}
					if("name".equals(data)){
						girl.setName(parser.nextText());
					}
					if("age".equals(data)){
						girl.setAge(Integer.parseInt(parser.nextText()));
					}
					if("school".equals(data)){
						girl.setSchool(parser.nextText());
					}
					
					break;
                                //結束標籤
				case XmlPullParser.END_TAG:
					if("girl".equals(data) && girl!= null){
						girls.add(girl);
					}
					
					break;

				default:
					break;
				}
                                //手動觸發事件
				eventType = parser.next();
			}
			Log.i("meng.li","size = "+girls.size());
			for(Girls g: girls){
				Log.i("meng.li","----"+g.toString()+"----");
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		}
	}
}
調用類 MainActivity.java

public class MainActivity extends Activity {
	private ListView listView;
	private JsonAdapter adapter;
	private Handler handler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String url2 = "http://192.168.199.126:8080/Server/girls.xml";
        new XmlParse(url2).start();
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章