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"/>