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

来源:互联网 发布:mmd的动作数据 编辑:程序博客网 时间:2024/06/05 21:55

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(){@Overridepublic 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(Exceptione){e.printStackTrace();Log.i("失败了", "123");}}                });        }}


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