PULL解析XML

<?xml version="1.0" encoding="utf-8"?>
<classes>
	<group name="一年级" num="10">
		<person name="小明" age="7">
			<chinese>
				语文80
			</chinese>
			<english>
				英语89
			</english>
		</person>
		<person name="小强" age="8">
			<chinese>
				语文90
			</chinese>
			<english>
				英语99
			</english>
		</person>
	</group>
	<group name="二年级" num="20">
		<person name="小文" age="8">
			<chinese>
				语文85
			</chinese>
			<english>
				英语95
			</english>
		</person>
		<person name="小中" age="9">
			<chinese>
				语文80
			</chinese>
			<english>
				英语90
			</english>
		</person>
	</group>
</classes>

package cn.com.pull;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Xml;
import android.widget.TextView;

public class PullParseXmlActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		TextView txt = (TextView) findViewById(R.id.txt);
		InputStream inputStream = null;
		try {
			inputStream = this.getResources().getAssets().open("pullTest.xml");
		} catch (IOException e) {
			e.printStackTrace();
		}
		txt.setText(pullParseXml(inputStream));

		
	}

	private String pullParseXml(InputStream inputStream) {
		String result = "";
		//解析全部的xml
		boolean isParse = true;
		try {
			// 创建一个xmlPullParser的工厂
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			// 获取一个解析实例
			XmlPullParser parse = factory.newPullParser();
			// 设置输入流的编码格式
			parse.setInput(inputStream, "UTF-8");
			// 当前事件的类型
			int eventType = parse.getEventType();
			while (XmlPullParser.END_DOCUMENT != eventType) {
				// 当前节点的名称
				String nodeName = parse.getName();
				switch (eventType) {
				case XmlPullParser.START_TAG:
					if ("group".equals(nodeName)) {
						// 解析<group>节点中的属性值,getAttributeCount()获取属性的个数
						for (int i = 0; i < parse.getAttributeCount(); i++) {
							// 属性名称
							String groupName = parse.getAttributeName(i);
							// 属性名称对应的值
							String nameValue = parse.getAttributeValue(i);
							result = result + groupName + " = " + nameValue;
						}
					} else if ("person".equals(nodeName)) {
						String personName = parse.getAttributeValue(0);
						String age = parse.getAttributeValue(1);
						result = result + "personName = " + personName
								+ "age =" + age + "\n";
					} else if ("chinese".equals(nodeName)) {
						//节点对应的文本
						String chinese = parse.nextText();
						
						result = result + "chinese = " + chinese;
					} else if ("english".equals(nodeName)) {
						String english = parse.nextText();

						result = result + "english = " + english + "\n";
					}
					break;
				case XmlPullParser.END_TAG:
					break;
				default:
					break;
				}
				//整个xml文件全部解析
				if(isParse){
					eventType = parse.next();
				}
			}
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return result;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值