android生成及解析xml 模版代码

来源:互联网 发布:360软件认证费用 编辑:程序博客网 时间:2024/06/06 12:42

生成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;}




0 0
原创粉丝点击