android生成及解析xml 模版代码

生成xml文件

//使用XmlSerializer来序列化xml文件
public static boolean backupSms_android(Context context){
	
	try{
		
		//0.获取短信数据
		ArrayList<SmsBean> allSms = SmsDao.getAllSms();
		//1.通过Xml获取一个XmlSerializer对象
		XmlSerializer xs = Xml.newSerializer();
		//2.设置XmlSerializer的一些参数,比如:设置xml写入到哪个文件中
		//os:xml文件写入流   encoding:流的编码
		xs.setOutput(context.openFileOutput("backupsms2.xml", Context.MODE_PRIVATE), "utf-8");
		//3.序列化一个xml的声明头
		//encoding:xml文件的编码  standalone:是否独立
		xs.startDocument("utf-8", true);
		//4.序列化一个根节点的开始节点
		//namespace:命名空间  name: 标签的名称
		xs.startTag(null, "Smss");
		//5.循环遍历list集合序列化一条条短信
		
			for (SmsBean smsBean : allSms) {
				xs.startTag(null, "Sms");
				//name:属性的名称  value:属性值
				xs.attribute(null, "id", smsBean.id+"");
				
				xs.startTag(null, "num");
				//写一个标签的内容
				xs.text(smsBean.num);
				xs.endTag(null, "num");
				xs.startTag(null, "msg");
				xs.text(smsBean.msg);
				xs.endTag(null, "msg");
				xs.startTag(null, "date");
				xs.text(smsBean.date);
				xs.endTag(null, "date");
				
				xs.endTag(null, "Sms");
			}

		//6.序列化一个根节点的结束节点
			xs.endTag(null, "Smss");
		//7.将xml写入到文件中,完成xml的序列化
			xs.endDocument();
			return true;

	}catch (Exception e) {
		e.printStackTrace();
	}
	return false;
}


解析xml文件

			//解析xml文件读取短信内容
public static int restoreSms(Context context) {
	ArrayList<SmsBean> arrayList = null;
	SmsBean smsBean = null;
	try{
		//1.通过Xml获取一个XmlPullParser对象
		XmlPullParser xpp = Xml.newPullParser();
		//2.设置XmlPullParser对象的参数,需要解析的是哪个xml文件,设置一个文件读取流
	
		//通过context获取一个资产管理者对象
		AssetManager assets = context.getAssets();
		//通过资产管理者对象能获取一个文件读取流
		InputStream inputStream = assets.open("backupsms.xml");
		xpp.setInput(inputStream,"utf-8");
		//xpp.setInput(context.openFileInput("backupsms2.xml"), "utf-8");
		//3.获取当前xml行的事件类型
		int type = xpp.getEventType();
		//4.判断事件类型是否是文档结束的事件类型
		while(type != XmlPullParser.END_DOCUMENT){
			//5.如果不是,循环遍历解析每一行的数据。解析一行后,获取下一行的事件类型

			String currentTagName = xpp.getName();
			//判断当前行的事件类型是开始标签还是结束标签
			switch (type) {
			case XmlPullParser.START_TAG:
				if(currentTagName.equals("Smss")){
					//如果当前标签是Smss,需要初始化一个集合
					arrayList = new ArrayList<SmsBean>();
				}else if(currentTagName.equals("Sms")){

					smsBean = new SmsBean();
					smsBean.id = Integer.valueOf(xpp.getAttributeValue(null, "id"));

				}else if(currentTagName.equals("num")){
					smsBean.num =  xpp.nextText();
				}else if(currentTagName.equals("msg")){
					smsBean.msg =  xpp.nextText();
				}else if(currentTagName.equals("date")){
					smsBean.date =  xpp.nextText();
				}
				break;
			case XmlPullParser.END_TAG:
				//当前结束标签是Sms的话,一条短信数据封装完成, 可以加入list中
				if(currentTagName.equals("Sms")){
					arrayList.add(smsBean);
				}
				break;
			default:
				break;
			}

			type = xpp.next();//获取下一行的事件类型
		}

		return arrayList.size();

	}catch (Exception e) {
		e.printStackTrace();
	}
	return 0;
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值