xml文件我们肯定都是认识的,比如清单文件,创建资源都用xml文件等。在xml文件中,都是有标签,文本之类的标识。那我们应该如何去实现xml序列化呢?
我们要知道,在实现xml序列化的时候,要几个点要知道,在xml文件里,一般就是开始文档,结束文档,开始标签,结束标签,文本。下面看代码就知道怎么去编写啦!
Student.java
package cn.huse.edu.xml.domain;
public class Student {
private String name;
private int age;
private int id;
public Student(String name, int age, int id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public Student() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", id=" + id + "]";
}
}
MainActivity.java
package cn.huse.edu.xml;
import java.io.FileNotFoundException;
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.util.Xml;
import android.view.View;
import cn.huse.edu.xml.domain.Student;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void createXml(View v){
//准备对象集合数据
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student("张三", 25, 1));
stuList.add(new Student("李四", 48, 2));
stuList.add(new Student("王五",23, 3));
/**
* xml的格式
* <students>
* <student id="1">
* <name>张三</name>
* <age>25</age>
* </student>
* ....
* </students>
*
*/
//保存到对象到xml文件中
try {
//xml序列化
XmlSerializer serializer = Xml.newSerializer();
//创建输出流 保存在 //data/data/packageName/files/student.xml
//Context.MODE_PRIVATE表示私有文件
FileOutputStream os = openFileOutput("student.xml",Context.MODE_PRIVATE);
//指定输出流
serializer.setOutput(os,"utf-8");
//开始文档
serializer.startDocument("utf-8", true);
//开始标签
serializer.startTag(null, "students");
for(Student student : stuList){
serializer.startTag(null, "student");
//属性
serializer.attribute(null, "id", student.getId()+"");
//name标签
serializer.startTag(null, "name");
//文本
serializer.text(student.getName());
serializer.endTag(null, "name");
//age标签
serializer.startTag(null, "age");
//文本
serializer.text(student.getAge()+"");
serializer.endTag(null, "age");
serializer.endTag(null, "student");
}
//结束标签
serializer.endTag(null, "students");
//结束文档
serializer.endDocument();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果