解析Xml有三种方式可选,sax ,dom ,pull 。 Dom在android上性能不是很少,在android上首选sax和pull。
前段时间写了个Android天气预报的Demo,涉及到了pull解析Xml,pull的解析算是比较简单易用,
下面总结一下自己用pull解析xml的学习经验。
附上天气预报deme代码:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=248543&page=1&extra=#pid2291325
获取省份信息:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince?
通过上面这个地址,我们可以用HttpGet去可以获取到省份Xml文本内容,获取到Xml文本步骤就省略了,
得到Xml内容如下:
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
<string>直辖市</string>
<string>特别行政区</string>
<string>黑龙江</string>
<string>吉林</string>
<string>辽宁</string>
<string>内蒙古</string>
<string>河北</string>
<string>河南</string>
<string>山东</string>
<string>山西</string>
<string>江苏</string>
<string>安徽</string>
<string>陕西</string>
<string>宁夏</string>
<string>甘肃</string>
<string>青海</string>
</ArrayOfString>
1.首先用到XmL的 静态方法去获取一个解析器XmlPullParser实例:
XmlPullParser xmlPullParser = Xml.newPullParser();
2.设置输入流
xmlPullParser.setInput(inStream, "UTF-8");
这里的输入流inStream就是获取的Xml文件的输入流。
3,获取事件类型
int eventCode = xmlPullParser.getEventType();
这里的事件类型一共有以下几种比较常用到:
XmlPullParser.START_DOCUMENT// 文档开始
XmlPullParser.START_TAG// 标签开始.
XmlPullParser.END_TAG// 标签结束
XmlPullParser.END_DOCUMENT// 文档结束
逻辑思路:
利用While语句,对文档进行遍历,每个While中,用switch去判断事件类型,进行相应处理,处理中利用
String name = xmlPullParser.getName();
判断标签的详细类型,再进行更详细的处理,每次循环结束用下面语句把游标移动到下一个标签上,进行下次while循环
eventCode = xmlPullParser.next();
直到
eventCode = XmlPullParser.END_DOCUMENT
表明文档已经结束,则解析完成。
具体代码:
public static ArrayList<String> getProvince(InputStream inStream, int type) { ArrayList<String> data = new ArrayList<String>(); XmlPullParser xmlPullParser = Xml.newPullParser(); try { xmlPullParser.setInput(inStream, "UTF-8"); int eventCode = xmlPullParser.getEventType(); while (eventCode != XmlPullParser.END_DOCUMENT) { String name = xmlPullParser.getName(); switch (eventCode) { case XmlPullParser.START_DOCUMENT:// 文档开始 break; case XmlPullParser.START_TAG:// 元素开始. if (name.equalsIgnoreCase("string")) { if(type ==2) data.add(xmlPullParser.nextText() .split("\\(")[0].trim().toString()); else { data.add(xmlPullParser.nextText() ); } } break; case XmlPullParser.END_TAG:// 元素结束 break; case XmlPullParser.END_DOCUMENT:// 文档结束 break; default: break; } eventCode = xmlPullParser.next(); } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
相关推荐
在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...
在Android中,XML解析主要有三种方式:DOM解析、SAX解析和Pull解析。DOM解析会将整个XML文件加载到内存,形成一个树形结构,适合小规模的XML文件;SAX解析是基于事件的,逐行读取,不会占用太多内存,但编程相对复杂...
这个过程涉及网络请求、XML解析、数据模型的设计以及异常处理等多个方面的知识,是Android开发中常见的数据处理任务。理解并掌握这些技能对于任何希望构建涉及网络数据交换的移动应用开发者来说都是至关重要的。
《pull-parser-2.jar工具类:Android开发中的XML与JSON解析利器》 在移动应用开发领域,尤其是在Android平台上,高效地处理XML和JSON数据是必不可少的技能。`pull-parser-2.jar`工具类库就是这样一个专门针对XML和...
本文将深入探讨如何在Android中使用两种常见的XML解析技术——SAX(Simple API for XML)和PULL(Pull Parser)来解析天气预报的XML数据。这两种方法各有优缺点,适用于不同的场景。 首先,我们来看SAX解析器。SAX...
本项目“Android应用源码之比较通用的XML解析方法”旨在探讨和实现不同XML解析方式,这对于理解和优化Android应用的性能至关重要。在毕业设计或论文研究中,掌握XML解析技巧是提升移动开发App质量的关键。 1. **DOM...
本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用...
这个模板可能包含了实现`XmlPullParser`接口的类,封装了XML解析的核心逻辑,如事件处理(如开始标签、结束标签、文本等)、解析错误处理等。用户只需将这个模板导入到自己的项目中,就可以快速地进行XML数据的读取...
- 使用异步任务处理XML解析,避免阻塞主线程。 总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以...
本示例着重于Android中的两种主要XML解析方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。这两种方法各有优缺点,适用于不同的场景。 首先,DOM解析是最常见的方法之一。它将整个XML文档...
总的来说,这份源码涵盖了Android开发中的核心技能之一——XML解析,无论是对DOM的深入理解还是对Pull解析的实践操作,都将对你的Android编程能力有显著提升。通过学习和研究,你不仅可以增强技术实力,还能为未来的...
可能会介绍一些辅助工具或库,比如使用IDE的插件来调试XML Pull解析,或者利用某些工具分析XML解析性能。 5. **压缩包子文件的文件名称列表:“pullxml”**: 这可能是一个示例程序或测试数据集,用于演示XML ...
在Android系统中,XML解析主要有两种方式:DOM解析和PULL解析。本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、...在实际开发中,根据项目需求选择合适的XML解析库,如JDOM、DOM、StaX或PULL解析器,可以大大提高开发效率和代码质量。
本篇文章将详细探讨PULL解析器,它是Android平台特有的一种轻量级、事件驱动的XML解析方法。 1. **PULL解析器介绍** PULL解析器是Android SDK中内置的一种解析XML的机制,特别适合于资源有限的移动设备。它通过...
Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...
XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型
在Android中,有两种主要的XML解析方式:DOM解析和SAX解析。DOM解析会将整个XML文档加载到内存中形成一棵DOM树,方便后续查询但消耗较多资源;而SAX解析是事件驱动的,逐行读取,不会加载整个文档,节省内存但操作...
本文将详细介绍基于Pull解析器的XML解析生成工具类的实现,以及如何将XML文件转换为对象和将对象转换为XML文件。 1. **XML解析器的初始化** 在使用Pull解析器之前,首先需要通过`XmlPullParserFactory`工厂类创建`...
《深入解析Ultra-pull-to-refresh三方库》 在Android应用开发中,下拉刷新(Pull-to-Refresh)功能已经成为许多应用的标准配置,它允许用户通过简单地向下拉动列表来更新内容。 Ultra-pull-to-refresh 是一个流行的...