Android开发之基础-------XML文件的序列化和解析
来源:互联网 发布:zank 知乎 编辑:程序博客网 时间:2024/05/18 13:05
xml文件作为一种数据存储文件是经常用得到的,下面针对xml文件的序列化和解析进行简单的总结
以短信备份为例:
1.找到控件设置点击事件
2.获取短信内容,以Bean对象的方式封装到list集合中
3.遍历list集合中的短信数据,存储到xml文件中
XmlSerializertry{//1.通过Xml获取一个XmlSerializer对象XmlSerializer xs = Xml.newSerializer();//2.设置要写入的xml文件的流信息//os:要写入的xml文件的流 encoding:流的编码xs.setOutput(context.openFileOutput("smsBackup2.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");//namespace:命名空间 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写入文件xs.endDocument();return true;}catch (Exception e) {e.printStackTrace();}
//xml文件的解析 *************************************************************************************************//
/**
*xml文件的解析有三种方法,dom解析 sax解析 pull解析 后两种方法一样,dom解析需要完全加载整个文档到内存中,如果文件较大
*就会浪费内存,所以使用了pull解析
*/
<pre name="code" class="html">try{ ArrayList<SmsBean> arrayList = null; SmsBean bean = null;//1.通过xml获取一个xmlPullParser对象XmlPullParser xpp = Xml.newPullParser();//2.设置要解析的是哪个xml文件//inputStream:要解析的那个xml文件的读取流 inputEncoding:流的编码xpp.setInput(context.openFileInput("smsBackup2.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("Smss".equals(currentTagName)){//如果当前标签是Smss,需要初始化一个集合arrayList = new ArrayList<SmsBean>();}else if("Sms".equals(currentTagName)){ bean = new SmsBean(); //获取Sms标签上的id属性 bean.id = xpp.getAttributeValue(null, "id");}else if("num".equals(currentTagName)){bean.num = xpp.nextText();//如果当前标签是开始标签,下一个标签是内容,该方法返回下一个元素的内容}else if("msg".equals(currentTagName)){bean.msg = xpp.nextText();//如果当前标签是开始标签,下一个标签是内容,该方法返回下一个元素的内容}else if("date".equals(currentTagName)){bean.date = xpp.nextText();//如果当前标签是开始标签,下一个标签是内容,该方法返回下一个元素的内容}break;case XmlPullParser.END_TAG:if("Sms".equals(currentTagName)){arrayList.add(bean);}break;default:break;}//6.解析一行后需要获取下一行事件的类型进行判断解析。type = xpp.next();}return arrayList.size();}catch (Exception e) {e.printStackTrace();}
0 0
- Android开发之基础-------XML文件的序列化和解析
- android XML文件解析和序列化
- Android中XML文件的序列化和解析
- Android之XML序列化和解析
- Android开发之xml文件的序列化
- Android开发之XML文件的解析
- Android开发笔记——序列化和解析XML文件
- Android复习之旅--XML序列化和pull解析
- Android开发之Pull解析读取和生成XML文件
- Android---40---实现XMl文件的序列化与解析
- Android开发基础之XML解析
- 安卓开发-xml的序列化和解析实例
- xml 文件序列化和解析
- android程序开发之sharepreference的数据存储及xml文件的序列化
- Android下xml文档的序列化和解析
- Android中xml的序列化和解析
- Android开发之XML文件解析
- Android开发之XML文件解析
- ACM起步
- 三大框架之----struts2之ValueStack存取数据
- struts2+spring+hibernate框架总结(框架分析+环境搭建+实例源码下载)
- HDU2031 进制转换
- java concurrent
- Android开发之基础-------XML文件的序列化和解析
- DirectX11 光照实现
- 神兽出没
- Reverse Linked List II
- 会话管理技术Cookie&Session
- uva6195
- CRC-CCITT算法
- Proxy
- 安卓控件使用系列25:Spinner下拉列表控件的使用方法