xml_pull

package com.example.day14_xmlpull;

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

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

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

/**
 * 解析Xml
 * 
 * @author gaoyn
 * 
 */
public class MainActivity extends Activity {

	List<Person> persons = new ArrayList<Person>();
	private String tagname;
	Person p;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	// 解析xml文件的方法
	public void pullxml(View v) {
		// 1 得到pull解析器
		XmlPullParser xmlParser = Xml.newPullParser();
		try {
			// 2 加载需要解析的文件
			xmlParser.setInput(getAssets().open("data.xml"), "utf-8");
			// 3 开始读取文档
			int type = xmlParser.getEventType();
			// 如果文档没有读到结束标签,循环进行读取文档内容
			while (type != XmlPullParser.END_DOCUMENT) {
				// 读取tag标签
				switch (type) {
				case XmlPullParser.START_DOCUMENT:
					System.out.println("开始读取文档+++++++++++++++++");
					break;
				case XmlPullParser.START_TAG:
					// 如果读取到开始标签,把标签名进行读取<person>
					tagname = xmlParser.getName();
					System.out.println(tagname+"++++++++++++++++标签名");
					if (tagname.equals("person")) {
						p = new Person();
						// 得到标签person中的属性值
						String sid = xmlParser.getAttributeValue(0).trim();
						p.setId(Integer.parseInt(sid));
					}
					break;
				case XmlPullParser.TEXT:
					if (tagname.equals("name")) {
						p.setName(xmlParser.getText());
					} else if (tagname.equals("age")) {
//						System.out.println(xmlParser.getText());
						String sage = xmlParser.getText().trim();
						p.setAge(Integer.parseInt(sage));
					}
					break;
				case XmlPullParser.END_TAG:
					//结束时,对标签名赋值
					tagname=xmlParser.getName();
					//如果结束标签为</person>
					if (tagname.equals("person")) {
						persons.add(p);
					}
					tagname="";
					break;
				default:
					break;
				}
				/**
				 * 业务逻辑处理
				 */
				type = xmlParser.next();
			}

			System.out.println("文档读取完毕++++++++++++++++++" + persons);
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

猜你喜欢

转载自zhengaihua.iteye.com/blog/2325470