android中XML序列化(内部存储和外部存储)

1 建好项目,layout布局文件中放一个button注册单击事件

2.构建一个Person类  name,password,age三个属性
package com.example.xmlserializer93p;

public class person {
	private String name;
	private String password;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	 person(String name,String password,int age){
		this.name=name;
		this.password=password;
		this.age=age;
		
	}
}
3 在MainActivity中写代码
package com.example.xmlserializer93p;


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


import org.xmlpull.v1.XmlSerializer;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;






public class MainActivity extends Activity {
	private Context context;
	private Button button1;
	
	String filename="person.xml";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
    	
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1=(Button)findViewById(R.id.button1);
        final List<person> userData=new ArrayList<person>();
        userData.add(new person("abc","123",23));
        Log.i("no problem","1");
      	context=this;////很关键,需要将这个类给context
       
        
        button1.setOnClickListener(new OnClickListener(){


			@Override
			public void onClick(View v) {
				try{
					XmlSerializer serializer=Xml.newSerializer();
					Log.i("no problem","2");
		//File file=new File(context.getFilesDir(), filename);///context.getFileDir 获取相对路径
			 File file=new File(Environment.getExternalStorageDirectory(),filename);////外部存储
					Log.i("no problem","3");
					FileOutputStream fos=new FileOutputStream(file);
					serializer.setOutput(fos,"UTF-8"); 
					Log.i("no problem","4");
					serializer.startDocument("UTF-8", true);
					serializer.startTag(null, "persons");
					
					int count=0;
					 Log.i("no problem","5");
					for(person person1 : userData){
						serializer.startTag(null, "person");
						serializer.attribute(null, "id", count+"");
						serializer.startTag(null, "name");
						serializer.text(person1.getName());
						serializer.endTag(null, "name");
						serializer.startTag(null, "password");
						serializer.text(person1.getPassword());
						serializer.endTag(null, "password");
						serializer.startTag(null, "age");
						serializer.text(person1.getAge()+"");
						serializer.endTag(null, "age");
						serializer.endTag(null, "person");
						count++;
						
					}
					serializer.endTag(null, "persons");
					serializer.endDocument();
					serializer.flush();
					fos.close();
				Log.i("序列化成功","count");
					
				}
				catch(Exception	e){
					e.printStackTrace();
					Log.i("失败了", "123");
				}
				
			}
        	
        });
    
    }
}


注: 当采用外部存储时,需要在清单文件AndroidManifest.xml中加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


  

猜你喜欢

转载自blog.csdn.net/xmj_0422/article/details/78631829