xmlsax

package com.example.day_sax;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button btn;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn = (Button) findViewById(R.id.jiexi);
		btn.setOnClickListener(listener);
	}

	private DefaultHandler handler = new DefaultHandler() {

		private List<Person> list;
		private String targetName;
		private Person p;

		@Override
		public void startDocument() throws SAXException {
			System.out.println("开始读取文件");
			list = new ArrayList<Person>();
			super.startDocument();
		}
		@Override
		public void endDocument() throws SAXException {
			System.err.println("文件读取完毕");
			super.endDocument();
		}
		@Override
		public void startElement(String uri, String localName, String qName,
				Attributes attributes) throws SAXException {
			targetName = localName;
			System.out.println("+++++++" + targetName);
			if ("student".equals(targetName)) {
				p = new Person();
				String id = attributes.getValue("id");
				p.setId(Integer.parseInt(id));
			}
			super.startElement(uri, localName, qName, attributes);
		}
		@Override
		public void endElement(String uri, String localName, String qName)
				throws SAXException {
			if ("student".endsWith(localName)) {
				list.add(p);
				p = null;
			}
			targetName = null;
			super.endElement(uri, localName, qName);
		}
		@Override
		public void characters(char[] ch, int start, int length)
				throws SAXException {
			if (targetName != null) {
				String text = new String(ch, start, length);
				System.out.println("text+++" + text);
				if ("name".equals(targetName)) {
					p.setName(text);
				} else if ("age".equals(targetName)) {
					p.setAge(text);
				}
			}
			super.characters(ch, start, length);
		}
	};
	OnClickListener listener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			SAXParserFactory spf = SAXParserFactory.newInstance();
			try {
				SAXParser saxParser = spf.newSAXParser();
				XMLReader xmlReader = saxParser.getXMLReader();
				// 设置监听
				xmlReader.setContentHandler(handler);
				xmlReader.parse(new InputSource(getAssets().open("data1.xml")));
			} catch (ParserConfigurationException e) {
				e.printStackTrace();
			} catch (SAXException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	};
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值