1.实例
package com.example.lucky.test52xml; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Xml; import android.view.View; import android.widget.Button; import org.xmlpull.v1.XmlSerializer; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { Button bt1_generateXml; Button bt2_generateXml; List<Sms> smsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1_generateXml=findViewById(R.id.bt1_generateXml); bt2_generateXml=findViewById(R.id.bt2_generateXml); smsList=new ArrayList<>(); for (int i = 0; i <10; i++) { Sms sms=new Sms(); sms.setAddress("10088"+i); sms.setBody("nihaolucky"+i); sms.setDate("201"+i); smsList.add(sms); } //方法1采用拼接的方式生成xml(不推荐使用) bt1_generateXml.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { StringBuffer sb=new StringBuffer(); //开始拼接XML文件头 sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); //开始拼接xml根节点 sb.append("<smss>"); for (Sms sms : smsList) { sb.append("<sms>"); //开始拼接address节点 sb.append("<address>"); sb.append(sms.getAddress()); sb.append("</address>"); //开始拼接body节点 sb.append("<body>"); sb.append(sms.getBody()); sb.append("</body>"); //开始拼接date节点 sb.append("<date>"); sb.append(sms.getDate()); sb.append("</date>"); sb.append("</sms>"); } sb.append("</smss>"); //将数据保存到sd卡中 File file=new File(Environment.getExternalStorageDirectory().getPath(),"lucky.xml"); try { FileOutputStream fos=new FileOutputStream(file); //文件输出流对应写操作 fos.write(sb.toString().getBytes()); fos.close(); //关闭流 } catch (Exception e) { e.printStackTrace(); } } }); bt2_generateXml.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //1.获取XmlSerializer类的实例,通过Xml这个工具列去获取 XmlSerializer serializer=Xml.newSerializer(); //2.设置XmlSerializer序列化器的参数 File file=new File(Environment.getExternalStorageDirectory().getPath(),"lucky2.xml"); FileOutputStream fos= null; try { fos = new FileOutputStream(file); serializer.setOutput(fos,"utf-8"); } catch (Exception e) { e.printStackTrace(); } //3.开始写xml文档开头 try { serializer.startDocument("utf-8",true); serializer.startTag(null,"smss"); //循环写sms节点 for (Sms sms : smsList) { serializer.startTag(null,"sms"); //开始写address节点 serializer.startTag(null,"address"); serializer.text(sms.getAddress()); serializer.endTag(null,"address"); //开始写body节点 serializer.startTag(null,"body"); serializer.text(sms.getBody()); serializer.endTag(null,"body"); //开始写date节点 serializer.startTag(null,"date"); serializer.text(sms.getDate()); serializer.endTag(null,"date"); serializer.endTag(null,"sms"); } serializer.endTag(null,"smss"); //写文档结尾 serializer.endDocument(); fos.close();//关闭流 } catch (Exception e) { e.printStackTrace(); } } }); } }