Android采用PULL解析XML文档

发布于 2022-09-30 12:03:34 字数 19606 浏览 7 评论 0

Android系统中采用PULL技术解析XML文档比用SAX技术性能要好得多。建议Android的开发者采用PULL技术解析XML文档。跟SAX类似,只不过PULL技术返回的事件类型是整型,所以我们只要对返回的事件进行处理就行了。1.package com.cn.service;

  1. 5.import java.io.IOException;   
  2. 6.
  3. 7.import java.io.InputStream;   
  4. 8.
  5. 9.import java.io.OutputStream;   
  6. 10.
  7. 11.import java.util.ArrayList;   
  8. 12.
  9. 13.import java.util.List;   
  10. 14.
  11. 15.  
  12. 16.
  13. 17.import org.xmlpull.v1.XmlPullParser;   
  14. 18.
  15. 19.import org.xmlpull.v1.XmlSerializer;   
  16. 20.
  17. 21.  
  18. 22.
  19. 23.import android.util.Xml;   
  20. 24.
  21. 25.  
  22. 26.
  23. 27.import com.cn.domain.Persion;   
  24. 28.
  25. 29./****  
  26. 30.
  27. 31.* 采用Pull解析XML  
  28. 32.
  29. 33.*   
  30. 34.
  31. 35.* ****/  
  32. 36.
  33. 37.public class PULLPersionService {   
  34. 38.
  35. 39.  
  36. 40.
  37. 41.    public static List<Persion> getPersino(InputStream is)throws Exception{   
  38. 42.
  39. 43.        List<Persion> list = null;   
  40. 44.
  41. 45.        Persion persion = null;   
  42. 46.
  43. 47.        XmlPullParser parser = Xml.newPullParser();   
  44. 48.
  45. 49.        parser.setInput(is, "UTF-8");   
  46. 50.
  47. 51.        int event = parser.getEventType();   
  48. 52.
  49. 53.        while(event != XmlPullParser.END_DOCUMENT){   
  50. 54.
  51. 55.            switch (event){   
  52. 56.
  53. 57.            case XmlPullParser.START_DOCUMENT:   
  54. 58.
  55. 59.                list =  new ArrayList<Persion>();   
  56. 60.
  57. 61.                break;   
  58. 62.
  59. 63.            case XmlPullParser.START_TAG:   
  60. 64.
  61. 65.                if("person".equals(parser.getName())){//得到指针所指向的节点名称   
  62. 66.
  63. 67.                    int id = Integer.parseInt(parser.getAttributeValue(0));   
  64. 68.
  65. 69.                    persion = new Persion();   
  66. 70.
  67. 71.                    persion.setId(id);   
  68. 72.
  69. 73.                }   
  70. 74.
  71. 75.                if(persion != null){   
  72. 76.
  73. 77.                    if("name".equals(parser.getName())){   
  74. 78.
  75. 79.                        String name = parser.nextText();   
  76. 80.
  77. 81.                        persion.setName(name);   
  78. 82.
  79. 83.                    }else if("age".equals(parser.getName())){   
  80. 84.
  81. 85.                        String age = parser.nextText();   
  82. 86.
  83. 87.                        persion.setName(age);   
  84. 88.
  85. 89.                    }   
  86. 90.
  87. 91.                }   
  88. 92.
  89. 93.                break;   
  90. 94.
  91. 95.            case XmlPullParser.END_TAG:   
  92. 96.
  93. 97.                if("person".equals(parser.getName())){   
  94. 98.
  95. 99.                    list.add(persion);   
  96. 100.
  97. 101.                    persion = null;   
  98. 102.
  99. 103.                }   
  100. 104.
  101. 105.                break;   
  102. 106.
  103. 107.            default:   
  104. 108.
  105. 109.                break;   
  106. 110.
  107. 111.            }   
  108. 112.
  109. 113.        }   
  110. 114.
  111. 115.        event = parser.next();   
  112. 116.
  113. 117.        return list;   
  114. 118.
  115. 119.    }   
  116. 120.
  117. 121.      
  118. 122.
  119. 123.    public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{   
  120. 124.
  121. 125.        XmlSerializer serializer = Xml.newSerializer();   
  122. 126.
  123. 127.        serializer.setOutput(os, "UTF-8");   
  124. 128.
  125. 129.        serializer.startDocument("UTF-8", true);   
  126. 130.
  127. 131.        serializer.startTag(null, "persons");   
  128. 132.
  129. 133.        for(Persion persion : list){   
  130. 134.
  131. 135.            serializer.startTag(null, "person");   
  132. 136.
  133. 137.            serializer.attribute(null, "id", String.valueOf(persion.getId()));   
  134. 138.
  135. 139.                serializer.startTag(null, "name");   
  136. 140.
  137. 141.                serializer.text(persion.getName());   
  138. 142.
  139. 143.                serializer.endTag(null, "name");   
  140. 144.
  141. 145.                  
  142. 146.
  143. 147.                serializer.startTag(null, "age");   
  144. 148.
  145. 149.                serializer.text(String.valueOf(persion.getAge()));   
  146. 150.
  147. 151.                serializer.endTag(null, "age");   
  148. 152.
  149. 153.            serializer.endTag(null, "person");   
  150. 154.
  151. 155.        }   
  152. 156.
  153. 157.        serializer.endTag(null, "persons");   
  154. 158.
  155. 159.        serializer.endDocument();   
  156. 160.
  157. 161.        os.flush();   
  158. 162.
  159. 163.        os.close();   
  160. 164.
  161. 165.    }   
  162. 166.
  163. 167.}  
  164. 168.复制打印
  165. 169.package com.cn.service;  
  166. 170.  
  167. 171.import java.io.IOException;  
  168. 172.import java.io.InputStream;  
  169. 173.import java.io.OutputStream;  
  170. 174.import java.util.ArrayList;  
  171. 175.import java.util.List;  
  172. 176.  
  173. 177.import org.xmlpull.v1.XmlPullParser;  
  174. 178.import org.xmlpull.v1.XmlSerializer;  
  175. 179.  
  176. 180.import android.util.Xml;  
  177. 181.  
  178. 182.import com.cn.domain.Persion;  
  179. 183./****
  180. 184.* 采用Pull解析XML
  181. 185.*  
  182. 186.* ****/  
  183. 187.public class PULLPersionService {  
  184. 188.  
  185. 189.    public static List<Persion> getPersino(InputStream is)throws Exception{  
  186. 190.        List<Persion> list = null;  
  187. 191.        Persion persion = null;  
  188. 192.        XmlPullParser parser = Xml.newPullParser();  
  189. 193.        parser.setInput(is, "UTF-8");  
  190. 194.        int event = parser.getEventType();  
  191. 195.        while(event != XmlPullParser.END_DOCUMENT){  
  192. 196.            switch (event){  
  193. 197.            case XmlPullParser.START_DOCUMENT:  
  194. 198.                list =  new ArrayList<Persion>();  
  195. 199.                break;  
  196. 200.            case XmlPullParser.START_TAG:  
  197. 201.                if("person".equals(parser.getName())){//得到指针所指向的节点名称  
  198. 202.                    int id = Integer.parseInt(parser.getAttributeValue(0));  
  199. 203.                    persion = new Persion();  
  200. 204.                    persion.setId(id);  
  201. 205.                }  
  202. 206.                if(persion != null){  
  203. 207.                    if("name".equals(parser.getName())){  
  204. 208.                        String name = parser.nextText();  
  205. 209.                        persion.setName(name);  
  206. 210.                    }else if("age".equals(parser.getName())){  
  207. 211.                        String age = parser.nextText();  
  208. 212.                        persion.setName(age);  
  209. 213.                    }  
  210. 214.                }  
  211. 215.                break;  
  212. 216.            case XmlPullParser.END_TAG:  
  213. 217.                if("person".equals(parser.getName())){  
  214. 218.                    list.add(persion);  
  215. 219.                    persion = null;  
  216. 220.                }  
  217. 221.                break;  
  218. 222.            default:  
  219. 223.                break;  
  220. 224.            }  
  221. 225.        }  
  222. 226.        event = parser.next();  
  223. 227.        return list;  
  224. 228.    }  
  225. 229.      
  226. 230.    public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{  
  227. 231.        XmlSerializer serializer = Xml.newSerializer();  
  228. 232.        serializer.setOutput(os, "UTF-8");  
  229. 233.        serializer.startDocument("UTF-8", true);  
  230. 234.        serializer.startTag(null, "persons");  
  231. 235.        for(Persion persion : list){  
  232. 236.            serializer.startTag(null, "person");  
  233. 237.            serializer.attribute(null, "id", String.valueOf(persion.getId()));  
  234. 238.                serializer.startTag(null, "name");  
  235. 239.                serializer.text(persion.getName());  
  236. 240.                serializer.endTag(null, "name");  
  237. 241.                  
  238. 242.                serializer.startTag(null, "age");  
  239. 243.                serializer.text(String.valueOf(persion.getAge()));  
  240. 244.                serializer.endTag(null, "age");  
  241. 245.            serializer.endTag(null, "person");  
  242. 246.        }  
  243. 247.        serializer.endTag(null, "persons");  
  244. 248.        serializer.endDocument();  
  245. 249.        os.flush();  
  246. 250.        os.close();  
  247. 251.    }  
  248. 252.}  

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文