xml文件的生成与解析
生成方法一:同事StringBuffer类对xml文件格式解析写入
package com.steel_rocky.xml; import android.app.Activity; import android.content.Context; import android.os.Bundle; 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 implements OnClickListener { Button back_up = null; Button restore = null; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; back_up = (Button) findViewById(R.id.back_up); back_up.setOnClickListener(this); restore = (Button) findViewById(R.id.restore); restore.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.back_up: if(SmsUtils.backupSms(mContext)) Toast.makeText(mContext, "备份成功", Toast.LENGTH_SHORT).show(); break; case R.id.restore: break; default: break; } } }
package com.steel_rocky.xml; import java.io.FileOutputStream; import java.util.ArrayList; import android.content.Context; public class SmsUtils { public static boolean backupSms(Context context) { // 获取短信内容 list ArrayList<SmsBean> allSms = SmsDao.getAllSms(); // 封装数据XML格式封装到stringbuffer中 StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone='yes' ?>"); sb.append("<Smss>"); for (SmsBean smsBean : allSms) { sb.append("<Sms id = \"" + smsBean.id + "\">"); sb.append("<num>"); sb.append(smsBean.num); sb.append("</num>"); sb.append("<msg>"); sb.append(smsBean.msg); sb.append("</msg>"); sb.append("<date>"); sb.append(smsBean.date); sb.append("</date>"); sb.append("</Sms>"); } sb.append("</Smss>"); try { FileOutputStream fileOutputStream = context.openFileOutput( "backup.xml", Context.MODE_PRIVATE); fileOutputStream.write(sb.toString().getBytes()); fileOutputStream.close(); return true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } }
package com.steel_rocky.xml; import java.util.ArrayList; public class SmsDao { public static ArrayList<SmsBean> getAllSms() { ArrayList<SmsBean> arrayList = new ArrayList<SmsBean>(); SmsBean smsBean1 = new SmsBean(); smsBean1.id = 1; smsBean1.num = "110"; smsBean1.msg = "警局"; smsBean1.date = "2016-12-12"; arrayList.add(smsBean1); SmsBean smsBean2 = new SmsBean(); smsBean2.id = 1; smsBean2.num = "120"; smsBean2.msg = "医院"; smsBean2.date = "2016-12-12"; arrayList.add(smsBean2); SmsBean smsBean3 = new SmsBean(); smsBean3.id = 1; smsBean3.num = "119"; smsBean3.msg = "消防"; smsBean3.date = "2016-12-12"; arrayList.add(smsBean3); return arrayList; } }
package com.steel_rocky.xml; public class SmsBean { public String num; public String msg; public String date; public int id; }
二、通过AndroidXml类获取xml生成方法写入
package com.steel_rocky.xml; import android.app.Activity; import android.content.Context; import android.os.Bundle; 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 implements OnClickListener { Button back_up = null; Button restore = null; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; back_up = (Button) findViewById(R.id.back_up); back_up.setOnClickListener(this); restore = (Button) findViewById(R.id.restore); restore.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.back_up: if(SmsUtils.backUpAndroid(mContext)) Toast.makeText(mContext, "备份成功", Toast.LENGTH_SHORT).show(); else Toast.makeText(mContext, "备份失败", Toast.LENGTH_SHORT).show(); break; case R.id.restore: break; default: break; } } }
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import org.xmlpull.v1.XmlSerializer; import android.content.Context; import android.util.Xml; public class SmsUtils { public static boolean backUpAndroid(Context context) { try { //0. 获取短信内容 list ArrayList<SmsBean> allSms = SmsDao.getAllSms(); //1.通过Xml获取一个XmlSerializer对象 XmlSerializer newSerializer = Xml.newSerializer(); //2.设置XmlSerializer的一些参数,比如:设置写入的xml文件的流对象 newSerializer.setOutput(context.openFileOutput("my.xml", Context.MODE_PRIVATE), "utf-8"); //3.序列化xml的声明头 newSerializer.startDocument("utf-8", true); //4.系列化一个根节点的开始节点 newSerializer.startTag(null, "Smss"); //5.循环遍历list集合 for (SmsBean smsBean : allSms) { newSerializer.startTag(null, "Sms"); newSerializer.attribute(null, "id", smsBean.id + ""); newSerializer.startTag(null, "num"); newSerializer.text(smsBean.num); newSerializer.endTag(null, "num"); newSerializer.startTag(null, "msg"); newSerializer.text(smsBean.msg); newSerializer.endTag(null, "msg"); newSerializer.startTag(null, "date"); newSerializer.text(smsBean.date); newSerializer.endTag(null, "date"); newSerializer.endTag(null, "Sms"); } //6.序列化一个根节点的结束节点 newSerializer.endTag(null, "Smss"); //7.将xml写入到文件中,完成xml的序列化 newSerializer.endDocument(); return true; } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return false; } }
package com.steel_rocky.xml; import java.util.ArrayList; public class SmsDao { public static ArrayList<SmsBean> getAllSms() { ArrayList<SmsBean> arrayList = new ArrayList<SmsBean>(); SmsBean smsBean1 = new SmsBean(); smsBean1.id = 1; smsBean1.num = "110"; smsBean1.msg = "警局"; smsBean1.date = "2016-12-12"; arrayList.add(smsBean1); SmsBean smsBean2 = new SmsBean(); smsBean2.id = 1; smsBean2.num = "120"; smsBean2.msg = "医院"; smsBean2.date = "2016-12-12"; arrayList.add(smsBean2); SmsBean smsBean3 = new SmsBean(); smsBean3.id = 1; smsBean3.num = "119"; smsBean3.msg = "消防"; smsBean3.date = "2016-12-12"; arrayList.add(smsBean3); return arrayList; } }
package com.steel_rocky.xml; public class SmsBean { public String num; public String msg; public String date; public int id; }
XML文件的解析:
dom解析:基于全文加载的解析方式——即要将文件全部加载到内存才能解析
sax解析:基于事件的逐行解析方式——
pull解析:同sax解析方式

浙公网安备 33010602011771号