1 建好项目,layout布局文件中放一个button注册单击事件
2.构建一个Person类 name,password,age三个属性
注: 当采用外部存储时,需要在清单文件AndroidManifest.xml中加权限:
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"/>