Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android采用PULL解析XML文檔

Android采用PULL解析XML文檔

編輯:初級開發

 android系統中采用PULL技術解析XML文檔比用SAX技術性能要好得多。建議android的開發者采用PULL技術解析XML文檔。跟SAX類似,只不過PULL技術返回的事件類型是整型,所以我們只要對返回的事件進行處理就行了。

Java代碼:

  1. package com.cn.service;   
  2.   
  3. import Java.io.IOException;   
  4. import Java.io.InputStream;   
  5. import Java.io.OutputStream;   
  6. import Java.util.ArrayList;   
  7. import Java.util.List;   
  8.   
  9. import org.xmlpull.v1.XMLPullParser;   
  10. import org.xmlpull.v1.XMLSerializer;   
  11.   
  12. import android.util.XML;   
  13.   
  14. import com.cn.domain.Persion;   
  15. /****  
  16.  * 采用Pull解析XML  
  17.  *   
  18.  * ****/  
  19. public class PULLPersionService {   
  20.   
  21.     public static List<Persion> getPersino(InputStream is)throws Exception{   
  22.         List<Persion> list = null;   
  23.         Persion persion = null;   
  24.         XmlPullParser parser = XML.newPullParser();   
  25.         parser.setInput(is, "UTF-8");   
  26.         int event = parser.getEventType();   
  27.         while(event != XMLPullParser.END_DOCUMENT){   
  28.             switch (event){   
  29.             case XMLPullParser.START_DOCUMENT:   
  30.                 list =  new ArrayList<Persion>();   
  31.                 break;   
  32.             case XMLPullParser.START_TAG:   
  33.                 if("person".equals(parser.getName())){//得到指針所指向的節點名稱   
  34.                     int id = Integer.parseInt(parser.getAttributeValue(0));   
  35.                     persion = new Persion();   
  36.                     persion.setId(id);   
  37.                 }   
  38.                 if(persion != null){   
  39.                     if("name".equals(parser.getName())){   
  40.                         String name = parser.nextText();   
  41.                         persion.setName(name);   
  42.                     }else if("age".equals(parser.getName())){   
  43.                         String age = parser.nextText();   
  44.                         persion.setName(age);   
  45.                     }   
  46.                 }   
  47.                 break;   
  48.             case XMLPullParser.END_TAG:   
  49.                 if("person".equals(parser.getName())){   
  50.                     list.add(persion);   
  51.                     persion = null;   
  52.                 }   
  53.                 break;   
  54.             default:   
  55.                 break;   
  56.             }   
  57.         }   
  58.         event = parser.next();   
  59.         return list;   
  60.     }   
  61.        
  62.     public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{   
  63.         XmlSerializer serializer = XML.newSerializer();   
  64.         serializer.setOutput(os, "UTF-8");   
  65.         serializer.startDocument("UTF-8"true);   
  66.         serializer.startTag(null"persons");   
  67.         for(Persion persion : list){   
  68.             serializer.startTag(null"person");   
  69.             serializer.attribute(null"id", String.valueOf(persion.getId()));   
  70.                 serializer.startTag(null"name");   
  71.                 serializer.text(persion.getName());   
  72.                 serializer.endTag(null"name");   
  73.                    
  74.                 serializer.startTag(null"age");   
  75.                 serializer.text(String.valueOf(persion.getAge()));   
  76.                 serializer.endTag(null"age");   
  77.             serializer.endTag(null"person");   
  78.         }   
  79.         serializer.endTag(null"persons");   
  80.         serializer.endDocument();   
  81.         os.flush();   
  82.         os.close();   
  83.     }   
  84. }  
復制代碼復制打印代碼打印
  1. package com.cn.service;   
  2.   
  3. import Java.io.IOException;   
  4. import Java.io.InputStream;   
  5. import Java.io.OutputStream;   
  6. import Java.util.ArrayList;   
  7. import Java.util.List;   
  8.   
  9. import org.xmlpull.v1.XMLPullParser;   
  10. import org.xmlpull.v1.XMLSerializer;   
  11.   
  12. import android.util.XML;   
  13.   
  14. import com.cn.domain.Persion;   
  15. /****  
  16.  * 采用Pull解析XML  
  17.  *   
  18.  * ****/  
  19. public class PULLPersionService {   
  20.   
  21.     public static List<Persion> getPersino(InputStream is)throws Exception{   
  22.         List<Persion> list = null;   
  23.         Persion persion = null;   
  24.         XmlPullParser parser = XML.newPullParser();   
  25.         parser.setInput(is, "UTF-8");   
  26.         int event = parser.getEventType();   
  27.         while(event != XMLPullParser.END_DOCUMENT){   
  28.             switch (event){   
  29.             case XMLPullParser.START_DOCUMENT:   
  30.                 list =  new ArrayList<Persion>();   
  31.                 break;   
  32.             case XMLPullParser.START_TAG:   
  33.                 if("person".equals(parser.getName())){//得到指針所指向的節點名稱   
  34.                     int id = Integer.parseInt(parser.getAttributeValue(0));   
  35.                     persion = new Persion();   
  36.                     persion.setId(id);   
  37.                 }   
  38.                 if(persion != null){   
  39.                     if("name".equals(parser.getName())){   
  40.                         String name = parser.nextText();   
  41.                         persion.setName(name);   
  42.                     }else if("age".equals(parser.getName())){   
  43.                         String age = parser.nextText();   
  44.                         persion.setName(age);   
  45.                     }   
  46.                 }   
  47.                 break;   
  48.             case XMLPullParser.END_TAG:   
  49.                 if("person".equals(parser.getName())){   
  50.                     list.add(persion);   
  51.                     persion = null;   
  52.                 }   
  53.                 break;   
  54.             default:   
  55.                 break;   
  56.             }   
  57.         }   
  58.         event = parser.next();   
  59.         return list;   
  60.     }   
  61.        
  62.     public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{   
  63.         XmlSerializer serializer = XML.newSerializer();   
  64.         serializer.setOutput(os, "UTF-8");   
  65.         serializer.startDocument("UTF-8", true);   
  66.         serializer.startTag(null, "persons");   
  67.         for(Persion persion : list){   
  68.             serializer.startTag(null, "person");   
  69.             serializer.attribute(null, "id", String.valueOf(persion.getId()));   
  70.                 serializer.startTag(null, "name");   
  71.                 serializer.text(persion.getName());   
  72.                 serializer.endTag(null, "name");   
  73.                    
  74.                 serializer.startTag(null, "age");   
  75.                 serializer.text(String.valueOf(persion.getAge()));   
  76.                 serializer.endTag(null, "age");   
  77.             serializer.endTag(null, "person");   
  78.         }   
  79.         serializer.endTag(null, "persons");   
  80.         serializer.endDocument();   
  81.         os.flush();   
  82.         os.close();   
  83.     }   
  84. }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved