解析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(3)---Pull解析
android xml pull解析示例,自己mark下,备忘
google天气预报XML-Pull解析版(完全解析)
android解析xml文件的方式--PULL.pdf
XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
Android网络编程之Pull解析XML文件~
pull xml 解析
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
pull解析xml文件
android开发例子-----pull解析xml天气信息
pull-parser-2.jar,解析XML,JSON 類庫,工具包,用於Android移動開發
在Android中,使用SAX和PULL解析XML,本项目中以解析天气预报为例。 详情见博客:http://blog.csdn.net/yalin18/article/details/7437752
用pullXML解析本地数据并存在本地之后还是XML格式。
使用pull解析xml 模板已经写好 只需导入即可用,将里面的解析类导入到其他工程也可用,不必麻烦在写了
在android平台下使用PULL解析XML源码。
XML解析AndroidPull解析代码
最基本最简答的,也是最实用的xml解析,使用pull解析方法,包含本地和网上两种,本地可直接运行,网上的需要修改url地址,欢迎大家
Android ReadXmlByPull 使用Pull解析Xml文件.rar
NULL 博文链接:https://justsee.iteye.com/blog/930603