XML的解析与生成
来源:互联网 发布:淘宝怎样刷销量信誉 编辑:程序博客网 时间:2024/06/10 03:38
序列化xml生成文件
1.写布局2.业务逻辑 a.备份 1.封装短信数据到list中 2.将list中的数据写到xml文件中。 b.恢复 1.解析xml文件中短信数据,封装到list集合中 2.将解析数据打印。XmlSerializer//使用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;}
使用pull解析xml格式的数据
dom解析:基于全文加载的解析方式 sax解析:基于事件的逐行解析方式 pull解析:同saxXmlPullParser //解析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;}
0 0
- XML的解析与生成
- xml的生成与解析
- XML的解析与生成
- XML的解析与生成
- XML的生成与解析
- XML的解析与生成
- xml解析与xml的生成
- XML生成与解析
- xml 生成与解析
- android xml文件的生成与解析
- 7.XML的解析与生成
- xml解析生成与解析
- Android中的XML解析与生成——Pull解析xml、实现xml文件的生成
- C#XML生成与解析
- android xml解析与生成
- jaxb xml生成与解析
- Python 生成与解析 XML
- Java解析XML与生成XML文件
- 配置opencv时出现错误“无法打开文件‘opencv_contrib300d.lib’”
- LBP特征
- 笔记一:进程间的通信
- 125. Valid Palindrome
- Android 解析XML(PULL),展示到ListView
- XML的解析与生成
- C# Process.StartInfo
- 论文推荐 Bloom Filters
- Hibernate(一) 开发环境等基础知识
- 数据结构实验之链表二:逆序建立链表
- 打印组合
- android 汉字转拼音带多音字识别
- C#中的foreach语句
- 回溯(Backtracking)