歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android學習筆記之XML存儲

Android學習筆記之XML存儲

日期:2017/3/1 10:41:34   编辑:Linux編程
繼續弄我們聊天的小軟件,嘗試用XML來存儲聊天記錄。

不過最終是放棄了,選擇使用SQLite來存儲記錄,(見http://www.linuxidc.com/Linux/2012-01/50683.htm )這是後話了……

先把XML的存儲與解析的代碼放來把(網上有很多,這兒就是小魏自己復習總結一下)

XMl存儲使用XML序列化對象XmlSerializer,看代碼就知道怎麼寫,很簡單:

  1. private ChatInfo info;
  2. public String FirstWriteXml(){
  3. XmlSerializer serializer = Xml.newSerializer();
  4. StringWriter writer = new StringWriter();
  5. try{
  6. serializer.setOutput(writer);
  7. // <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  8. serializer.startDocument("UTF-8",true);
  9. serializer.text("\n");
  10. // System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> ");
  11. serializer.startTag("","chatlog");
  12. serializer.text("\n");
  13. serializer.startTag("","chatinfo");
  14. serializer.text("\n");
  15. // System.out.println("<chatinfo>");
  16. //<name>小魏</name>
  17. serializer.text("\t");
  18. serializer.startTag("","name");
  19. serializer.text(info.getChatName().toString());
  20. serializer.endTag("","name");
  21. serializer.text("\n");
  22. // System.out.println("<name>"+info.getChatName()+"</name");
  23. //<time>2011-11-27 20:00</time>
  24. serializer.text("\t");
  25. serializer.startTag("","time");
  26. serializer.text(info.getChatTime().toString());
  27. serializer.endTag("","time");
  28. serializer.text("\n");
  29. // System.out.println("<name>"+info.getChatTime()+"</name");
  30. //<info>Hi~~~</info>
  31. serializer.text("\t");
  32. serializer.startTag("","info");
  33. serializer.text(info.getChatString().toString());
  34. serializer.endTag("","info");
  35. serializer.text("\n");
  36. // System.out.println("<name>"+info.getChatString()+"</name");
  37. // </chatinfo>
  38. serializer.endTag("","chatinfo");
  39. serializer.text("\n");
  40. // System.out.println("</chatinfo> ");
  41. serializer.endTag("","chatlog");
  42. serializer.text("\n");
  43. // System.out.println("</chatinfo> ");
  44. serializer.endDocument();
  45. return writer.toString();
  46. }
  47. catch(Exception e)
  48. {
  49. throw new RuntimeException(e);
  50. }
  51. }
寫出來的效果如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <chatlog>
  3. <chatinfo>
  4. <name>小魏</name>
  5. <time>2011-11-27 20:00</time>
  6. <info>Hi~~~</info>
  7. </chatinfo>
  8. </chatlog>
這裡需要注意,<chatlog>這個標簽是必須的,因為xml裡一定要有一顆主樹,如果有多條記錄,但是沒有最外這層結構,比如下面的例子有多條記錄:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <chatinfo>
  3. <name>小魏</name>
  4. <time>2011-11-27 20:00</time>
  5. <info>Hi~~~</info>
  6. </chatinfo>
  7. <chatinfo>
  8. <name></name>
  9. <time>2011-11-27 20:01</time>
  10. <info>你好!</info>
  11. </chatinfo>
  12. <chatinfo>
  13. <name>小魏</name>
  14. <time>2011-11-27 20:02</time>
  15. <info>聊天模塊終於搞完了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</info>
  16. </chatinfo>
  17. <chatinfo>
  18. <name></name>
  19. <time>2011-11-27 20:02</time>
  20. <info>太好啦!</info>
  21. </chatinfo>

使用SAXParserFactory解析時,解析玩第一條記錄就會停止,而且會報錯:

Copyright © Linux教程網 All Rights Reserved