序列化xml:
Person 类:
public class Person {
private String name;
private int id;
private int age;
public Person(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", id=" + id +
", age=" + age +
'}';
}
}
序列化xml:
XmlSerializer serializer = Xml.newSerializer();
Log.i("test", "" + Environment.getExternalStorageDirectory());
File file = new File("/mnt/sdcard", "xmldemo.xml");
try {
FileOutputStream fos = new FileOutputStream(file);
serializer.setOutput(fos, "utf-8");
serializer.startDocument("utf-8", true);
serializer.startTag(null, "Person");
for (int i = 0; i < 10; i++) {
Person person = new Person("王小二", i, 18 + i);
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId() + "");
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(person.getAge()+"");
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "Person");
serializer.endDocument();
Log.i("test", "写入成功");
} catch (Exception e) {
e.printStackTrace();
Log.i("test", "写入失败");
}
pull解析:这里犯了一个错误,解析出来的数据,写到person 对象中(当读到person 开始节点时,应为person的引用赋值,当读到person 结束节点时,应把person 引用赋值为null,并把这个person对象add到list集合中)
List<Person> personlist = new ArrayList<Person>();
XmlPullParser parser = Xml.newPullParser();
File file = new File("/mnt/sdcard", "xmldemo.xml");
try {
FileInputStream fis = new FileInputStream(file);
parser.setInput(fis, "utf-8");
int type = parser.getEventType();
Person person = null;
while (type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG:
if ("person".equals(parser.getName())) {
person = new Person();
String id = parser.getAttributeValue(0);
person.setId(Integer.valueOf(id));
} else if ("name".equals(parser.getName())) {
String name = parser.nextText();
person.setName(name);
} else if ("age".equals(parser.getName())) {
String age = parser.nextText();
person.setAge(Integer.valueOf(age));
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(parser.getName())) {
personlist.add(person);
person = null;
}
break;
}
type = parser.next();
}
for (Person p : personlist) {
Log.i("test", p.toString());
}
} catch (Exception e) {
e.printStackTrace();
Log.i("test", "解析失败");
}
}
使用SharedPreferences类 写xml文件,此文件会保存在/data/data/包名/shared_prefs/下
SharedPreferences sp = this.getSharedPreferences("xmldemo.xml", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putString("name", "王小二");
edit.commit();
读取此xml文件:
SharedPreferences sp = getSharedPreferences("xmldemo.xml", MODE_PRIVATE);
String readstr = sp.getString("name", null);