xml文件的序列化
发布时间:2020-12-16 09:19:29 所属栏目:百科 来源:网络整理
导读:如何将(天气。短信等)数据以xml的格式序列化到本地呢? 以备份短信为例,假设已经获取到了手机系统里所有短信的信息。 第一种方式: -----不推荐 1.new 一个 StringBuilder容器 2.遍历每条短信,将标签、数据添加进容器中 3.指定要存储的路径,将容器中的数
如何将(天气。短信等)数据以xml的格式序列化到本地呢?
以备份短信为例,假设已经获取到了手机系统里所有短信的信息。 第一种方式: -----不推荐 1.new 一个 StringBuilder容器 2.遍历每条短信,将标签、数据添加进容器中 3.指定要存储的路径,将容器中的数据以IO流的形式输出到指定位置。public void backSms1(View view){ //假设我们已经获得了所有的短信 StringBuilder sb = new StringBuilder(); sb.append("<?xml version="1.0" encoding="utf-8"?>"); sb.append("<smss>"); for (SmsInfo info : smsInfos) { sb.append("<sms>"); sb.append("<address>"); sb.append(info.getAddress()); sb.append("</address>"); sb.append("<type>"); sb.append(info.getAddress()); sb.append("</type>"); sb.append("<body>"); sb.append(info.getAddress()); sb.append("</body>"); sb.append("<date>"); sb.append(info.getAddress()); sb.append("</date>"); sb.append("</sms>"); } sb.append("</smss>"); try { File file = new File(Environment.getExternalStorageDirectory(),"backup.xml"); FileOutputStream fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); Toast.makeText(this,"备份成功",Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this,"备份失败",Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } 第二种方式: 1.获取xml文件的序列化器 2.指定xml文件的路径、编码方式 3.遍历每条短信(设置开始标签,内容,结束标签) public void backSms2(View view){ try{ XmlSerializer serializer = Xml.newSerializer(); File file = new File(Environment.getExternalStorageDirectory(),"backup2.xml"); FileOutputStream fos = new FileOutputStream(file); //初始化序列号器 指定xml数据写入到哪个文件 并且指定文件的编码方式 serializer.setOutput(fos,"utf-8"); serializer.startDocument("utf-8",true); serializer.startTag(null,"smss"); for(SmsInfo info : smsInfos){ serializer.startTag(null,"sms"); serializer.attribute(null,"id",info.getId()+""); serializer.startTag(null,"body"); serializer.text(info.getBody()); serializer.endTag(null,"body"); serializer.startTag(null,"address"); serializer.text(info.getAddress()); serializer.endTag(null,"address"); serializer.startTag(null,"type"); serializer.text(info.getType()+""); serializer.endTag(null,"type"); serializer.startTag(null,"date"); serializer.text(info.getDate()+""); serializer.endTag(null,"date"); serializer.endTag(null,"sms"); } serializer.endTag(null,"smss"); serializer.endDocument(); fos.close(); Toast.makeText(this,Toast.LENGTH_SHORT).show(); }catch(Exception e){ e.printStackTrace(); Toast.makeText(this,Toast.LENGTH_SHORT).show(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |