`
DanielHan
  • 浏览: 54226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
074641d7-eb86-343f-a745-65a0f693edb5
设计模式
浏览量:7127
社区版块
存档分类
最新评论

存储方式二:文件(XML XmlPull解析)

 
阅读更多
1.读
LinkMan.java
package com.example.xmlpulldemo;

public class LinkMan {
	private String name;
	private String email;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}


XmlPullUtil.java
package com.example.xmlpulldemo;

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

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

public class XmlPullUtil {

	private InputStream input;
	private List<LinkMan> all=null;
	private String curElement=null;
	private LinkMan man=null;

	public XmlPullUtil(InputStream input) {
		this.input = input;
	}
	
	public List<LinkMan> getAll(){
		XmlPullParserFactory factory=null;
		XmlPullParser parser=null;
		try {
			factory=XmlPullParserFactory.newInstance();
			parser=factory.newPullParser();
			parser.setInput(input, "UTF-8");
			int eventType=parser.getEventType();//事件码
			while(eventType!=XmlPullParser.END_DOCUMENT){
				switch(eventType){
					case XmlPullParser.START_DOCUMENT:
						all=new ArrayList<LinkMan>();
						break;
					case XmlPullParser.START_TAG:
						curElement=parser.getName();
						if(curElement.equals("linkman")){
							man=new LinkMan();
						}
						break;
					case XmlPullParser.TEXT:
						if(curElement.equals("name")){
							man.setName(parser.getText());
						}else if(curElement.equals("email")){
							man.setEmail(parser.getText());
						}
						break;
					case XmlPullParser.END_TAG:
						curElement=parser.getName();
						if(curElement.equals("linkman")){
							all.add(man);
							man=null;
						}
						break;
					case XmlPullParser.END_DOCUMENT:
						break;
					default:
						break;
				}
				eventType=parser.next();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return all;
	};
}


Main.java
package com.example.xmlpulldemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.TextView;
import android.widget.Toast;

public class Main extends Activity {
	private TextView name=null;
	private TextView email=null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		name=(TextView)findViewById(R.id.name);
		email=(TextView)findViewById(R.id.email);
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
			File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/addresslist.xml");
			if(!file.exists()){//文件不存在
				return;
			}
			InputStream input=null;
			try {
				input = new FileInputStream(file);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			XmlPullUtil util=new XmlPullUtil(input);
			List<LinkMan> all=util.getAll();
			name.setText(all.get(0).getName());
			email.setText(all.get(0).getEmail());
		}else{
			Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show();
		}
	}
}


2.写
XmlPullUtil.java
package com.example.xmlpulldemo;

import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;

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

public class XmlPullUtil {

	private OutputStream output;
	private List<LinkMan> all;

	public XmlPullUtil(OutputStream output,List<LinkMan> all) {
		this.output=output;
		this.all=all;
	}
	
	public void save(){
		XmlPullParserFactory factory=null;
		XmlSerializer xs=null;
		try {
			factory=XmlPullParserFactory.newInstance();
			xs=factory.newSerializer();
			xs.setOutput(output, "UTF-8");
			xs.startDocument("UTF-8", true);
			xs.startTag(null, "addresslist");
			Iterator<LinkMan> iterator=all.iterator();
			while(iterator.hasNext()){
				LinkMan man=iterator.next();
				xs.startTag(null, "linkman");
				xs.startTag(null, "name");
				xs.text(man.getName());
				xs.endTag(null, "name");
				xs.startTag(null, "email");
				xs.text(man.getEmail());
				xs.endTag(null, "email");
				xs.endTag(null, "linkman");
			}
			xs.endTag(null, "addresslist");
			xs.endDocument();
			xs.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	};
}


Main.java
package com.example.xmlpulldemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;

public class Main extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
			File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/demo.xml");
			if(!file.getParentFile().exists()){
				file.getParentFile().mkdirs();
			}
				List<LinkMan> all=new ArrayList<LinkMan>();
				for(int i=0;i<2;i++){
					LinkMan man=new LinkMan();
					man.setName("DanielHan"+i);
					man.setEmail(i+"@qq.com");
					all.add(man);
				}
				try {
					XmlPullUtil util=new XmlPullUtil(new FileOutputStream(file), all);
					util.save();
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}
		}else{
			Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show();
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics