Android Pull解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

  解析xml的三种方式:DOM, SAX, PULL

好像Android学习过程中SAX被提到的概率高了一些. 固然SAX解析很好,并且名字很sexy. 可Pull解析有过之而无不及.

开工.

先认识一个文件catalogue.xml,放置于assets文件夹下

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <chapters> 
  3.         <chapter id="1"> 
  4.             <name>wait_notify_demo</name> 
  5.             <summary>wait_notify例子</summary> 
  6.         </chapter> 
  7. </chapters> 

可以理解为一本书的章节对象, 第一章名为wait_notify_demo

然后我们要解析之

 
  1. package com.lc.corecode.utility; 
  2.  
  3. import java.io.InputStream; 
  4. import java.util.LinkedList; 
  5. import java.util.List; 
  6. import org.xmlpull.v1.XmlPullParser; 
  7. import android.util.Xml; 
  8. import com.lc.corecode.pojo.Chapter; 
  9.  
  10. public class PullParse { 
  11.     /** 
  12.      * pull解析catalogue.xml 
  13.      * @param inputStream 目标文件 
  14.      * @return chapter对象的集合 
  15.      * @throws Exception 
  16.      */ 
  17.     public List<Chapter> getAllChapters(InputStream inputStream) throws Exception{ 
  18.         List<Chapter> chapters = null
  19.         Chapter chapter = null
  20.         XmlPullParser parser =Xml.newPullParser(); 
  21.         parser.setInput(inputStream, "UTF-8"); 
  22.          
  23.         int event = parser.getEventType();//产生第一个事件 
  24.         while (event != XmlPullParser.END_DOCUMENT) { 
  25.             switch (event) { 
  26.             case XmlPullParser.START_DOCUMENT://文档开始 
  27.                 chapters = new LinkedList<Chapter>(); 
  28.                 break
  29.             case XmlPullParser.START_TAG://标签开始事件 
  30.                 if ("chapter".equals(parser.getName())) {//标签为<chapter> 
  31.                     chapter = new Chapter(); 
  32.                     chapter.setId(Integer.parseInt(parser.getAttributeValue(0))); 
  33.                 } 
  34.                 if (chapter != null) { 
  35.                     if ("name".equals(parser.getName())) {//标签为<name> 
  36.                         chapter.setName(parser.nextText()); 
  37.                     } else if ("summary".equals(parser.getName())){ 
  38.                         chapter.setSummary(parser.nextText()); 
  39.                     } 
  40.                 } 
  41.                 break
  42.             case XmlPullParser.END_TAG://标签结束 
  43.                 if ("chapter".equals(parser.getName())) {//结束标签</chapter> 
  44.                     chapters.add(chapter); 
  45.                     chapter = null
  46.                 } 
  47.                 break
  48.             default
  49.                 break
  50.             } 
  51.             event = parser.next();//进入下一个元素 
  52.         } 
  53.         return chapters; 
  54.     } 

最后是找个地方调用

 
  1. PullParse pullParse = new PullParse(); 
  2. List<Chapter> chapters = pullParse.getAllChapters(getResources().getAssets().open("catalogue.xml")); 

收工.



本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/1194036,如需转载请自行联系原作者

相关文章
|
2月前
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
140 2
|
30天前
|
开发工具 Android开发 iOS开发
深入解析安卓与iOS开发环境的优劣
【10月更文挑战第4天】 本文将深入探讨安卓和iOS两大主流移动操作系统的开发环境,从技术架构、开发工具、用户体验等方面进行详细比较。通过分析各自的优势和不足,帮助开发者更好地理解这两个平台的异同,从而为项目选择最合适的开发平台提供参考。
21 3
|
9天前
|
安全 5G Android开发
安卓与iOS的较量:技术深度解析
【10月更文挑战第24天】 在移动操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两个系统的技术特点、优势和不足,以及它们在未来可能的发展方向。我们将通过对比分析,帮助读者更好地理解这两个系统的本质和内涵,从而引发对移动操作系统未来发展的深思。
19 0
|
1月前
|
安全 Android开发 iOS开发
深入解析:安卓与iOS的系统架构及其对应用开发的影响
本文旨在探讨安卓与iOS两大主流操作系统的架构差异,并分析这些差异如何影响应用开发的策略和实践。通过对比两者的设计哲学、安全机制、开发环境及性能优化等方面,本文揭示了各自的特点和优势,为开发者在选择平台和制定开发计划时提供参考依据。
49 4
|
1月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
39 6
|
1月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
174 0
|
XML JavaScript Android开发
|
XML 测试技术 Android开发
|
7天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
5天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
18 5