Android 中使用Pull解析XML文件

XML文件结构:



	
	    张三
	    30
	
	
	    李四
	    40
	


XML的解析方式有很多种,比如:DOM解析、SAX解析、Pull解析等等... 这里采用Pull解析的方式。

package com.qiulong.xmlloadtest;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
import android.util.Xml;

public class XmlLoader {
	
	/**
	 * 加载XML配置文件
	 * @param context
	 * @return
	 */
	public static ArrayList loadUserEntityFromAsset(Context context){
		ArrayList list = null;
		User entity = null;
		InputStream in = null;
		try {
			in = context.getAssets().open("text.xml");
			XmlPullParser parser = Xml.newPullParser();
			parser.setInput(in, "UTF-8");
			int eventType = parser.getEventType();
			while (eventType != XmlPullParser.END_DOCUMENT) {
				switch (eventType) {
				// 判断当前事件是否为文档开始事件
				case XmlPullParser.START_DOCUMENT:
					list = new ArrayList();
					break;
					// 判断当前事件是否为标签元素开始事件
				case XmlPullParser.START_TAG:
					if (parser.getName().equals("entity")) { // 判断开始标签元素是否是book
						entity = new User();
					} else if (parser.getName().equals("name")) {
						entity.setName(parser.nextText());
					} else if (parser.getName().equals("age")) {
						entity.setAge(parser.nextText());
					}
					break;
					// 判断当前事件是否为标签元素结束事件
				case XmlPullParser.END_TAG:
					if (parser.getName().equals("entity")) {
						list.add(entity);
					} 
					break;
				}
				// 进入下一个元素并触发相应事件
				eventType = parser.next();
			}
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		} finally {
			colseStream(in);//关闭流
		}
		return list;
	}
	
	
	/**
	 * 关闭流
	 * @param in InputStream
	 */
	public static void colseStream(InputStream in) {
		try {
			if (in != null) {
				in.close();
			}
		} catch (Exception e) {
		}
	}
	
}


3.下面是布局文件,很简单的一个布局,就一个线性布局,然后通过代码往里面添加视图。


    


Activity,初始化控件后,先解析XML文件,得到值,然后循环遍历创建TextView来显示内容。
package com.qiulong.xmlloadtest;

import java.util.List;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.app.Activity;
import android.graphics.Color;

public class MainActivity extends Activity {

	private LinearLayout lin;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		lin = (LinearLayout)this.findViewById(R.id.lin);
		
		List list = XmlLoader.loadUserEntityFromAsset(this);
		for (int i = 0; i < list.size(); i++) {
			TextView name = new TextView(this);
			name.setText(list.get(i).getName());
			name.setTextSize(20);
			name.setTextColor(Color.RED);
			lin.addView(name);
			
			TextView age = new TextView(this);
			age.setText(list.get(i).getAge()+"");
			age.setTextSize(20);
			name.setTextColor(Color.RED);
			lin.addView(age);
		}
	}

}

效果图:
Android 中使用Pull解析XML文件_第1张图片


以上内容仅供参考和学习,如有不好的地方欢迎指正和建议,谢谢!


你可能感兴趣的:(Android开发)