Android初级教程:使用xml序列器

之前备份短信的时候生成xml都是手动拼写的,有一个问题:当短信里面存在</body>这样的标签的时候,最后结果就不是完整的xml文件,显然出错。但是,今天使用序列化器的方式,就能有效的解决上边遇到的问题。就看一下序列化器如何生成xml文件:

给活动定义一个布局文件,里面知识简单的加入一个按钮:

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="备分短信" android:onClick="click"/>

看主活动中的代码如下:

package com.itydl.xmlserializer;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.itydl.createxml.domain.Message;import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
//为了更好地保存不同,且负责的数据,使用xml序列器
public class MainActivity extends Activity {List<Message> smsList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 虚拟10条短信smsList = new ArrayList<Message>();for (int i = 0; i < 10; i++) {Message sms = new Message("小志好棒" + i, System.currentTimeMillis()+ "", "138" + i + i, "1");smsList.add(sms);}}public void click(View v){//使用xml序列化器生成xml文件。序列化器会把乱七八糟的东西(短信里有标签属性)过滤掉//1.拿到序列化器对象XmlSerializer xs = Xml.newSerializer();//2.初始化.因为涉及到xml文件,因此初始化也包含文件名和路径File file = new File(Environment.getExternalStorageDirectory(),"sms.xml");try {FileOutputStream fos = new FileOutputStream(file);//enconding:指定用什么编码生成xml文件xs.setOutput(fos, "utf-8");//setOutput(OutputStream os, String encoding) ,编码方式默认u8//3.开始生成xml文件//enconding:指定头结点中的enconding属性的值xs.startDocument("utf-8", true);//生成头结点(最高一行),startDocument(String encoding, Boolean standalone) xs.startTag(null, "message");//生成一个根节点,开始标签节点for (Message sms : smsList) {xs.startTag(null, "sms");xs.startTag(null, "body");//start和end一对一对的写。还有四个子节点xs.text(sms.getBody() + "<body>");//这样不会报错。而是把<body>当做了内容了xs.endTag(null, "body");xs.startTag(null, "date");xs.text(sms.getDate());xs.endTag(null, "date");xs.startTag(null, "type");xs.text(sms.getType());xs.endTag(null, "type");xs.startTag(null, "address");xs.text(sms.getAddress());xs.endTag(null, "address");xs.endTag(null, "sms");}xs.endTag(null, "message");//告诉序列化器,文件生成完毕xs.endDocument();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }
}

当然,对sdcard写,需要写权限。加入即可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

运行程序,点击备份按钮。我们可以在sdcard目录找到这个文件:

导出来看一下里面的格式如下:

后边省略,生成的xml文件是没有问题的。看到即使文本里面出现了<body>标签,也不会出现错误

转载于:https://www.cnblogs.com/wanghang/p/6299621.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KUKA 声明变量时的几点注意

临时变量&#xff1a; 1、src文件中定义的局部变量&#xff0c;该种变量存在于内存中的栈上。子程序调用时&#xff0c;变量在栈上动态生成。调用结束后从栈中自动销毁。 因为存在于栈上的原因&#xff0c;访问该变量需要栈指针&#xff0c;所以该种变量无法在机器人程序运行时…

简单实现

1.创建接口和实现类 &#xff08;模拟实现查询天气&#xff09; 接口&#xff1a; package com.learning.weather;/*** * weather 接口 &#xff1a;实现模拟wsdl*/ public interface WeatherInterface {/*** 查询天气* param name* return*/public String queryWeather(Strin…

有关莫比乌斯反演

对于两个定义域为整数的函数F(x)和f(x); 若有: 然后F(x)可以快速求出&#xff1b; 如何用F求解f呢&#xff1f; 莫比乌斯反演&#xff1a; 对于两个定义域为整数的函数F(x)和f(x); 若有: 则有&#xff1a; 其中μ(x)为莫比乌斯函数&#xff0c;其定义为&#xff1a; 对于&#…

(原创)JS点击事件——Uncaught TypeError: Cannot set property 'onclick' of null

html部分代码&#xff1a; JS部分代码&#xff1a; 需要实现的效果&#xff1a;点击图片&#xff0c;来回相互切换。 我开始的错误做法&#xff1a;代码如上图所示&#xff08;逻辑上看起来是没有错误的&#xff09; 尝试过程&#xff1a;把JS代码放在</body>闭合标签之前…

事务传播机制/数据库异常解析——2016-8-13分享总结

一. 事务的传播机制&#xff0f;required 跟 required new 的使用与区别 基础回顾 1.1 事务的隔离级别&#xff1a; ISOLATION_READ_UNCOMMITTED&#xff08;读未提交&#xff09; ISOLATION_READ_COMMITTED&#xff08;读已提交&#xff09; ISOLATION_REPEATABLE_READ&#x…

20155307 2016-2017 《Java程序设计》第三次实验报告

&#xff08;一&#xff09;敏捷开发与XP 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。从2001年开始&#xff0c;一些软件界的专家开始倡导“敏捷”的价值观和流程&#xff0c;他们肯定了流行做法的价值&#xff0c;但是强…

ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例

为什么80%的码农都做不了架构师&#xff1f;>>> The best elasticsearch highlevel java rest api-----bboss ElasticSearch客户端框架bboss的ClientInterface 接口提供了创建/修改、获取、删除索引Indice和IndexTemplate的方法&#xff0c;本文举例说明其使用方法…

spring mvc注解@RequestMapping

1、url路径映射 基本功能 2、窄化请求映射 根路径子路径 注意setViewName的路径。 3、限制http请求方法 get和 post 如果是get 转载于:https://www.cnblogs.com/jway1101/p/5773923.html

老婆的驾照要下来了,形容下我此刻的心情

&#xfeff;&#xfeff; 老婆的驾照要下来了&#xff0c;形容下我此刻的心情&#xff1a; 路上遇到的女人&#xff0c;大部分是不用眼睛和脑子开车的&#xff0c;完全是凭自己的感觉开车。凡是看到前车奇慢、路口犹豫不决、不打灯缓慢变线、不该…

windows环境下OpenLDAP安装与客户端连接配置

2019独角兽企业重金招聘Python工程师标准>>> 1.下载安装OpenLDAP版本 C:\Users\Administrator>slapd -V OpenLDAP 2.4.42 Standalone LDAP Server (slapd) 2.安装过程中&#xff0c;全部用默认的操作执行即可。 3.修改OpenLDAP文件如下&#xff1a; # MDB Backen…

halcon标定后改变世界坐标系参考点方法

halcon相机标定完成后&#xff0c;世界坐标系原点在标定板的中间&#xff0c;如果要自定义坐标系原点该如何操作 如图&#xff1a; 方法1 使用仿射变换 *pose_to_hom_mat3d (FinalPose, HomMat3D) *hom_mat3d_translate_local (HomMat3D, dx, dy, 0, HomMat3DTranslate) *hom_…

KUKA---US2电源的安全属性-------老款硬线连接实现的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 网络帧实现的DRIVE安全STO SBC

安全双回路的监控&#xff1a;&#xff08;工业上的安全&#xff0c;是指安全等级&#xff0c;没有绝对的安全&#xff09; 1. 机械式&#xff1a;监控关断继电器的辅助反馈触点&#xff0c;这个关断继电器包含机械联锁触点&#xff0c;这样反馈触点和主触点可以同步开关动…

X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较

&#xfeff;&#xfeff;X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较 Profisafe安全输入信号US2信号有待深入&#xff08;通过外部PLC &#xff1a;&#xff09; &#xfeff;&#xfeff;

var类型推断关键字

目录var 类型推断介绍var的一个例子&#xff1a;编程遵循规则var 类型推断介绍 使用var定义变量时&#xff0c;用var关键字替代实际类型。编译器可以根据变量的初始化值自行“推断”变量的类型。 例如&#xff1a; var A 0&#xff1b; 等价于 int A 0&#xff1b;var的一个…

斯坦福大学机器学习——高斯判别分析

转自 http://blog.csdn.net/linkin1005/article/details/39054023 同朴素贝叶斯一样&#xff0c;高斯判别分析&#xff08;Gaussian discriminant analysismodel, GDA&#xff09;也是一种生成学习算法&#xff0c;在该模型中&#xff0c;我们假设y给定的情况下&#xff0c;x服…

MapGIS转Shp文件的单位问题

MapGIS转Shp文件的单位问题 原文:MapGIS转Shp文件的单位问题在MapGIS浏览查看一下数据&#xff0c;各种不习惯&#xff1b;用mapgis自带的转shp功能&#xff0c;属性表会出错&#xff1b;利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式。但经常会遇到一个…

显示/隐藏Mac系统中所有的隐藏文件

显示&#xff1a; 在终端输入:defaults write com.apple.finder AppleShowAllFiles YES隐藏: 在终端输入:defaults write com.apple.finder AppleShowAllFiles NO然后重启Finder即可(先点击左上角的苹果图标&#xff0c;再选强制退出&#xff0c;然后选中Finder&#xff0c;点击…

机械零点、MAM 文件 、 EMT标定原理

&#xfeff;&#xfeff; 机械零点、MAM 文件、EMT标定原理。 可调节的机械零点&#xff0c;不需要MAM文件&#xff0c;使之成为90度。 不可调节的机械零点&#xff0c;需要MAM文件修正&#xff0c;使之成为90度。 带负载的偏移补偿、带负载的偏移补偿mastering。做过带负…

智慧城市的互联网大脑架构图:大社交网络与智慧城市结合是关键

从本质上讲智慧地球和智慧城市还是互联网发展到一定程度&#xff0c;向城市建设蔓延和深入的结果。因此建设智慧城市就不能不忽略互联网的发展趋势和进化规律。 而越来越多的迹象表明“互联网正在向着与人类大脑高度相似的方向进化&#xff0c;它将具备自己的视觉、听觉、触觉、…