在离线状态下保存数据可能会用到的XML文件读写
来源:互联网 发布:淘宝店主照片认证 编辑:程序博客网 时间:2024/05/21 08:56
- 一、首先是写一个xml文件
//自定义一个文件保存路径String path_stack_name="/mnt/sdcard"+"/config"+"/stack_names.xml";//写文件int writeFile(){try { //首先将你需要的数据序列化为可读的xml字符串 String xml = getTabItemsString(); //用文件输出流将得到的xml字符串写到指定文件保存路径去FileOutputStream fos = new FileOutputStream(path_stack_name,false); fos.write(xml.getBytes("UTF-8")); fos.close(); } catch (Exception e) { e.printStackTrace(); return -1; } return 0; }
// 上文getTabItemsString方法,序列化xml文件 public String getTabItemsString(){ try { //由android.util.Xml创建一个XmlSerializer实例 XmlSerializer serializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); serializer.setOutput(writer); serializer.startDocument("UTF-8", true); changeLine(serializer,enter); serializer.startTag("", "config"); changeLine(serializer,enter); serializer.startTag("", "stackNameGroup"); serializer.attribute("", "name", HSResourceUtil.getString(R.string.stack_name)); //tabItems即为我需要的数据 if (tabItems !=null && tabItems.size() != 0) { for(int i=0;i<tabItems.size();i++) { changeLine(serializer,enter); serializer.startTag("", "itemName"); serializer.attribute("", "number",""+tabItems.get(i).getNumber()); serializer.attribute("", "value", tabItems.get(i).getStackName()); serializer.endTag("", "itemName"); } }else{ changeLine(serializer,enter); serializer.startTag("", "itemName"); serializer.attribute("", "number", ""); serializer.attribute("", "value", ""); serializer.endTag("", "itemName"); } changeLine(serializer,enter); serializer.endTag("", "stackNameGroup"); changeLineEnd(serializer,enter); serializer.endTag("", "config"); serializer.endDocument(); serializer.flush(); return writer.toString(); } catch (Exception e) { Log.i("wsh", "e---"+e.toString()); } return ""; }
//用到的工具类 String enter = System.getProperty("line.separator");//换行 public void changeLine(XmlSerializer serializer, String enter) throws Exception { String text="\n"; for(int i=0;i<serializer.getDepth();i++) { text+=" "; } serializer.text(text); } public void changeLineEnd(XmlSerializer serializer, String enter) throws Exception { String text="\n"; for(int i=0;i<serializer.getDepth()-1;i++) { text+=" "; } serializer.text(text); }
*二、其次是读一个XML文件
//path和写的路径一致 private void parserFile(String path) { try { FileInputStream fis = new FileInputStream(path); //这里使用缓冲流,优势是可以一次读入多个字节,咱不向磁盘写入,先放在内存中,待达到缓冲区大小后在写入磁盘,这样可以减少磁盘IO操作,提高效率,默认缓冲区为8M BufferedInputStream is = new BufferedInputStream(fis); parse(is); fis.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } //解析输入流 } //具体XML解析方法 public void parse(BufferedInputStream is) throws Exception { //由android.util.Xml创建一个XmlPullParser实例 XmlPullParser parser = Xml.newPullParser(); //设置输入流 并指明编码方式 parser.setInput(is, "UTF-8"); int eventType = parser.getEventType(); String value=""; int itemNumber; while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: String parserTagName=parser.getName(); if (parser.getName().equals("stackNameGroup")) { break; } if (parser.getName().equals("config")) { break; } if (parser.getName().equals("itemName")) { itemNumber = Integer.valueOf(parser.getAttributeValue(null,"number")); value=parser.getAttributeValue(null, "value"); if (tabItems==null) { tabItems = new ArrayList<TabItem>(); } if (tabItems!=null) { tabItems.add(new TabItem(itemNumber, value)); } } case XmlPullParser.END_TAG: break; } eventType = parser.next(); } }
*三、就差一个tabItems的Bean就好了
public class TabItem { int number; String stackName; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getStackName() { return stackName; } public void setStackName(String stackName) { this.stackName = stackName; } public TabItem(int number, String stackName) { super(); this.number = number; this.stackName = stackName; }}
*四、欢迎各位朋友批评指正并提出宝贵建议 - -!
阅读全文
0 0
- 在离线状态下保存数据可能会用到的XML文件读写
- Android下的数据保存、文件读写以及访问模式
- 数据在XML / YAML文件的保存/载入
- Xml文件在unity中的读写-----模拟玩游戏时我们保存游戏的动作
- web 工程下 java操作属性文件保存在classes下的读写操作
- 可能会用到的软件
- 可能会用到的网站
- 可能会用到的东西
- android文件读写,数据保存
- Android文件读写,保存数据
- C#下XML文件的读写操作
- opencv下XML 文件的读写
- opencv下XML 文件的读写 很全滴
- opencv下XML 文件的读写
- 在c#中XML文件的读写
- 将matlab的数据保存xml 在c++下通过opencv读取;
- 利用DOM4J在java环境下读写xml文件的方法
- 在codeblocks下的文件读写
- HDU 6063 RXD and math【快速幂】【打表找规律】
- JVM学习笔记-02-JVM的分区及其创建对象的过程
- == 和 equals 的区别
- POJ1065-LIS&偏序集定理-Wooden Sticks
- 使图片按指定的比例铺满ImageView
- 在离线状态下保存数据可能会用到的XML文件读写
- 10 大深度学习架构
- BFU C.yi的书包 01背包【水题】
- 剑指Offer面试题11[数值的整数次方]
- ubuntu小白常用指令汇总(不断更新ing)
- 好玩的线上检测代码工具-codewars(2)
- UI 一一 自定义等高cell (XIB方式)
- 008_Java中的Number
- 顺时针打印矩阵