serializer序列化器生成xml文件
目录
一、目录结构
二、类MainActivity
package com.example.serialize;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.xmlpull.v1.XmlSerializer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity{
private ArrayList<SMS> arrSms;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrSms = new ArrayList<SMS>();
for(int i = 0; i < 30; i++) {
SMS sms = new SMS();
sms.from = "100" + i;
sms.content = "content" + i;
sms.time = "2018-11-29 21:21:58" + i;
arrSms.add(sms);
}
//打印
for(SMS tem:arrSms) {
System.out.println(tem);
}
}
//1.通过StringBuilder来保存xml文件
public void savexml1(View v) {
// TODO Auto-generated method stub
//拼接XML文档
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sBuilder.append("<SMSLIST>");
for(SMS tem:arrSms) {
sBuilder.append("<SMS>");
sBuilder.append("<from>");
sBuilder.append(tem.from);
sBuilder.append("</from>");
sBuilder.append("<content>");
sBuilder.append(tem.content);
sBuilder.append("</content>");
sBuilder.append("<time>");
sBuilder.append(tem.time);
sBuilder.append("</time>");
sBuilder.append("</SMS>");
}
sBuilder.append("</SMSLIST>");
String xmlstr = sBuilder.toString();
try {
FileOutputStream fileOutput = openFileOutput("sms.xml", MODE_PRIVATE);
fileOutput.write(xmlstr.getBytes());
fileOutput.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//2.通过StringBuilder来保存xml文件
public void savexml2(View v) {
//生成序列化器
XmlSerializer serializer = Xml.newSerializer();
try {
serializer.setOutput(openFileOutput("sms2.xml", MODE_PRIVATE), "utf-8");
//1.xml头
serializer.startDocument(null, true);
//2.根节点
serializer.startTag(null, "SMSLIST");
for(SMS tem:arrSms) {
serializer.startTag(null, "SMS");
serializer.startTag(null, "from");
serializer.text(tem.from);
serializer.endTag(null, "from");
serializer.startTag(null, "content");
serializer.text(tem.from);
serializer.endTag(null, "content");
serializer.startTag(null, "time");
serializer.text(tem.time);
serializer.endTag(null, "time");
serializer.endTag(null, "SMS");
}
serializer.endTag(null, "SMSLIST");
serializer.endDocument();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、类:SMS
package com.example.serialize;
public class SMS {
public String from;
public String content;
public String time;
@Override
public String toString() {
return "SMS [from=" + from + ", content=" + content + ", time=" + time + "]";
}
}
四、activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.serialize.MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="savexml1"
android:text="xml序列化1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="savexml2"
android:layout_alignParentRight="true"
android:text="xml序列化2"
/>
</RelativeLayout>