Android开发之xml文件的序列化

来源:互联网 发布:淘宝网手机网页版 编辑:程序博客网 时间:2024/05/29 16:47

Xml文件的序列化就是把数据从内存保存到文件中,使用xml文件保存就叫:Xml文件序列化;也叫串行化

工程目录结构:


保存到文件的结果: 保存到设备上的位置:


实现代码

package com.example.xmlserializer;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.example.xmlserializer.domain.UserInfo;import android.os.Bundle;import android.os.Environment;import android.util.Xml;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;import android.app.Activity;public class MainActivity extends Activity implements OnClickListener {private List<UserInfo> users;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button save = (Button) findViewById(R.id.btnSave);save.setOnClickListener(this);users = new ArrayList<UserInfo>();for (int i = 0; i < 5; i++) {users.add(new UserInfo("aaa" + i, i, "男", 1110, i));}}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btnSave:SaveXml();break;default:break;}}private void SaveXml() {try {XmlSerializer serialzer = Xml.newSerializer();File file = new File(Environment.getExternalStorageDirectory()+ File.separator + "backup.xml");FileOutputStream fos = new FileOutputStream(file);serialzer.setOutput(fos, "utf-8");serialzer.startDocument("utf-8", true); // 文件开头serialzer.startTag(null, "users"); // xml文件的根标签for (UserInfo user : users) {serialzer.startTag(null, "user");serialzer.attribute(null, "id", user.getId() + "");serialzer.startTag(null, "name");serialzer.text(user.getName());serialzer.endTag(null, "name");serialzer.startTag(null, "age");serialzer.text(user.getAge() + "");serialzer.endTag(null, "age");serialzer.startTag(null, "sex");serialzer.text(user.getSex());serialzer.endTag(null, "sex");serialzer.startTag(null, "brithday");serialzer.text(user.getBrithday() + "");serialzer.endTag(null, "brithday");serialzer.endTag(null, "user");}serialzer.endTag(null, "users");serialzer.endDocument(); // 文件结尾fos.close();Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();Toast.makeText(this, "保存失败", Toast.LENGTH_LONG).show();}}}

Demo下载

点击打开链接


原创粉丝点击