文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android数据的存储

2022-06-06 13:54

关注

目录小朋友,你是不是有很多问号???关于数据的存储一、SharedPreferences的应用(重要)1、获取sp的实例2、获取编辑器3、存数据4、提交数据5、回显数据二、生成xml的第一种方式(不是authority用法)1、创建sb对象2、开始组拼xml3、保存数据三、生成xml的第二种方式(authority方法)1、获取XmlSerializer类的实例,通过Xml这个工具类去获取2、设置XmlSerializer序列化器的参数3、开始写xml文档四、Xml的解析1、声明一个pull解析器2、初始化解析器,设置解析哪个流,用什么编码3、获取解析的文档的事件类型4、具体判断一下,解析到的是哪个标签5、补充说明的东东@CopyRight名侦探柯小启 小朋友,你是不是有很多问号??? 关于数据的存储

一、SharedPreferences的应用(重要) 1、获取sp的实例

SharedPreferences sp;  //可将其定义为成员变量 private SharedPreferences sp;
sp = getSharedPreferences("config", 0);
2、获取编辑器
Editor edit = sp.edit();
3、存数据
//各种类型Int,String,Boolean,Float,Long等
edit.putString("name", name);
edit.putString("pwd", pwd);
edit.putInt("number", number);
4、提交数据
edit.commit();
5、回显数据
//在生成的xml文件中读取用户保存密码的文件,回显

//提取数据所用的类型要和第三步骤存储保持一致
String name = sp.getString("name", "");
String pwd2 = sp.getString("pwd", "");
二、生成xml的第一种方式(不是authority用法) 1、创建sb对象
StringBuffer sb = new StringBuffer();
2、开始组拼xml
//[1]组拼xml文件头 \" 为转义
sb.append("");
        // [3]开始组拼xml根节点
		sb.append("");
        // [4]开始组拼xml节点,循环从List里面取数据
		for (Sms sms : smsLists) {
			sb.append("");
            // [5]开始组拼电话号码节点
			sb.append("");
			sb.append(sms.getNumber());
			sb.append("");
            // [6]开始组拼短信内容节点
			sb.append("");
			sb.append(sms.getContent());
			sb.append("");
            // [7]开始组拼日期节点
			sb.append("");
			sb.append(sms.getDate());
			sb.append("");
			sb.append("");
		}
		sb.append("");
3、保存数据

File file = new File(Environment.getExternalStorageDirectory(),"xx.xml");
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());//sb
fos.close();
三、生成xml的第二种方式(authority方法) 1、获取XmlSerializer类的实例,通过Xml这个工具类去获取
XmlSerializer serializer = Xml.newSerializer();		//XmlSerializer为接口
2、设置XmlSerializer序列化器的参数

 serializer.setOutput(fos, "utf-8");
3、开始写xml文档
//[1]写xml文档的开头

serializer.startDocument("utf-8", true);
//[2]开始写xml文档的根节点

serializer.startTag(null, "sms");
//[3]循环写xml节点
for (Sms sms : smsLists) {
serializer.startTag(null, "sms");
serializer.startTag(null, "number");	
serializer.text(sms.getNumber());
serializer.endTag(null, "number");
 serializer.startTag(null, "content");
serializer.text(sms.getContent());
serializer.endTag(null, "content");
serializer.startTag(null, "date");		
serializer.text(sms.getDate());
serializer.endTag(null, "date");
serializer.endTag(null, "sms");
}
serializer.endTag(null, "sms");
serializer.endDocument();//关闭刷新
fos.close();//关闭流
四、Xml的解析 xml的数据来源于服务器,服务器的开发人员通过服务器的技术把数据准备一个xml返回给客户端 服务器是以流的形式把数据返回的 对应Android的开发人员做xml解析,把我们关心的数据取出来就可以了 1、声明一个pull解析器
XmlPullParser parser = Xml.newPullParser();		//XmlPullParser为接口
2、初始化解析器,设置解析哪个流,用什么编码
parser.setInput(in, "utf-8");
3、获取解析的文档的事件类型
int type = parser.getEventType();
4、具体判断一下,解析到的是哪个标签
while (type != XmlPullParser.END_DOCUMENT) {
			switch (type) {
			case XmlPullParser.START_TAG://解析开始标签
				//具体判断一下,解析到的是哪个开始标签
				if("weather".equals(parser.getName())){
					//创建一个集合对象
					weatherLists = new ArrayList();
				}else if("channel".equals(parser.getName())){
					//创建WeatherInfo对象
					weatherInfo = new WeatherInfo();
					//获取id值
					String id = parser.getAttributeValue(0);
					weatherInfo.setId(id);
				}else if("city".equals(parser.getName())){
					//获取city数据
					String city = parser.nextText();
					weatherInfo.setCity(city);
				}else if("wea".equals(parser.getName())){
					//获取wea数据
					String wea = parser.nextText();
					weatherInfo.setWea(wea);
				}else if("temp".equals(parser.getName())){
					//获取temp数据
					String temp = parser.nextText();
					weatherInfo.setTemp(temp);
				}else if("wind".equals(parser.getName())){
					//获取wind数据
					String wind = parser.nextText();
					weatherInfo.setWind(wind);
				}else if("info".equals(parser.getName())){
					//获取info数据
					String info = parser.nextText();
					weatherInfo.setInfo(info);
				}
				break;
			case XmlPullParser.END_TAG://解析结束标签
				//具体判断一下,解析到的是哪个结束标签
				if("channel".equals(parser.getName())){
					//把javaBean对象存到集合中
					weatherLists.add(weatherInfo);
				}
				break;
			}
			//继续向下解析
			type = parser.next();
		}
5、补充说明的东东

    池州
    下雨
    20℃
    3
    请穿个长袖

public static final int START_DOCUMENT = 0;         
public static final int END_DOCUMENT = 1;          
public static final int START_TAG = 2;              
public static final int END_TAG = 3;
public static final int TEXT = 4;
parser.getName();  //获取中的内容
parser.next();  //指向下一个节点
parser.nextText();  //获取文本内容
@CopyRight名侦探柯小启
作者:名侦探柯小启


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯