歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android學習筆記之XML存儲

繼續弄我們聊天的小軟件,嘗試用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.            
  8.         // <?xml version="1.0" encoding="UTF-8" standalone="yes"?>     
  9.         serializer.startDocument("UTF-8",true);    
  10.         serializer.text("\n");  
  11. //      System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> ");   
  12.           
  13.         serializer.startTag("","chatlog");    
  14.         serializer.text("\n");  
  15.           
  16.         serializer.startTag("","chatinfo");    
  17.         serializer.text("\n");  
  18. //      System.out.println("<chatinfo>");   
  19.   
  20.         //<name>小魏</name>   
  21.         serializer.text("\t");  
  22.         serializer.startTag("","name");    
  23.         serializer.text(info.getChatName().toString());    
  24.         serializer.endTag("","name");    
  25.         serializer.text("\n");  
  26. //      System.out.println("<name>"+info.getChatName()+"</name");   
  27.           
  28.         //<time>2011-11-27 20:00</time>   
  29.         serializer.text("\t");  
  30.         serializer.startTag("","time");    
  31.         serializer.text(info.getChatTime().toString());    
  32.         serializer.endTag("","time");    
  33.         serializer.text("\n");  
  34. //      System.out.println("<name>"+info.getChatTime()+"</name");   
  35.            
  36.         //<info>Hi~~~</info>   
  37.         serializer.text("\t");  
  38.         serializer.startTag("","info");    
  39.         serializer.text(info.getChatString().toString());    
  40.         serializer.endTag("","info");  
  41.         serializer.text("\n");  
  42. //      System.out.println("<name>"+info.getChatString()+"</name");   
  43.           
  44.         // </chatinfo>     
  45.         serializer.endTag("","chatinfo");  
  46.         serializer.text("\n");  
  47. //      System.out.println("</chatinfo> ");   
  48.           
  49.         serializer.endTag("","chatlog");  
  50.         serializer.text("\n");  
  51. //      System.out.println("</chatinfo> ");   
  52.         serializer.endDocument();  
  53.           
  54.           
  55.         return writer.toString();    
  56.     }    
  57.         catch(Exception e)    
  58.         {    
  59.             throw new RuntimeException(e);    
  60.         }    
  61.           
  62.     }  
寫出來的效果如下:
  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