android之Xml的高效解析方式——pull
来源:互联网 发布:7.0数据库 编辑:程序博客网 时间:2024/05/22 12:57
我们知道,解析XML在各个平台使用也非常广泛,android也是一样,经常会涉及到XML的解析读取,解析方式主要有三种:SAX解析器、DOM解析器和PULL解析器。
SAX解析器:它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的,也就是ContentHandler为重要核心,解析过程中每遇到一个事件源,只有调用事件解析器才能得到相应的处理;不过它的优点主要是解析速度快,占用内存少。非常适合在Android移动设备中使用;
DOM解析器:dom解析的原理是基于树形的结构和信息数据集合,将文件分为独立的元素、属性和注释等,然后以节点树的形式在内存中对XML文件进行表示,利用DOM中的对象,可以对XML文档进行读取、搜索、修改、添加和删除等操作。
PULL解析器:PULL解析器的运行方式和SAX类似,都是基于事件的模式。不同的是,在PULL解析过程中,我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码。PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器。
接下来我们重点了解一下PULL解析器的简单使用方式:
首先我们在assets中放入一个xml文件:
接下来我们就通过pull的方式读取xml中几个控件的ID名称,这里要注意的是,调用pullParser.getAttributeValue()时,通常我们可以根据传入的数字下表可以取出标签的属性值,也就是pullParser.getAttributeValue(1)
,但是如果你想要根据属性名称获取属性值的话,就得写成:pullParser.getAttributeValue(null, "id")
。ok,下面我们直接看完整的代码演示:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv_text = (TextView) findViewById(R.id.tv_text); try { //得到XML解析器 XmlPullParser pullParser = Xml.newPullParser(); InputStream is = getAssets().open("activity_main.xml"); pullParser.setInput(is, "utf-8"); //得到事件类型 int eventType = pullParser.getEventType(); //文档的末尾 //遍历内部的内容 StringBuilder stringBuilder = new StringBuilder(); while (eventType != XmlPullParser.END_DOCUMENT) { String name = pullParser.getName(); if (!TextUtils.isEmpty(name)) if (eventType == XmlPullParser.START_TAG) { String attributeValue = pullParser.getAttributeValue(null, "id"); attributeValue = attributeValue.substring(attributeValue.indexOf("/") + 1, attributeValue.length()); stringBuilder.append("name===="); stringBuilder.append(name); stringBuilder.append("\t\tid===="); stringBuilder.append(attributeValue); stringBuilder.append("\n\n"); } eventType = pullParser.next();//读取下一个标签 } tv_text.setText(stringBuilder.toString()); } catch (Exception e) { e.printStackTrace(); } }}
运行效果如下:
- android之Xml的高效解析方式——pull
- Android学习笔记(16)————Android的XML解析之pull方式
- android解析xml文件的方式之PULL解析
- Android XML解析学习—Pull方式(HttpURLConnection xml)
- android使用pull的方式解析xml
- android解析xml文件的方式 --- PULL
- Android解析xml数据的一种常用方式——PULL解析器解析
- android 解析xml的三种方式(DOM,SAX,PULL)之PULL(转载收藏) .
- Android XML解析学习——Pull方式
- android XML解析学习——Pull方式
- Android XML解析学习——Pull方式
- Android XML解析学习——Pull方式
- Android XML解析学习——Pull方式
- Android XML解析学习——Pull方式
- Android XML解析学习——Pull方式 .
- Android XML解析学习——Pull方式
- android中解析XML文件方式—DOM SAX PULL
- Android Pull方式解析XML
- Gallery画廊
- c++11 thread_local
- MySql条件查询不到数据 → 更改数据库编码
- ImageMagic实现centerCrop转化缩略图效果
- 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
- android之Xml的高效解析方式——pull
- 2017.2.14 HTML/CSS有感3
- Android 常用知识点整理
- vuejs与外界通信
- iOS 常见的宏定义
- 龙脊战歌 架设教程
- Omi原理-Hello Omi
- 图的基本存储的基本方式一二维数组(布尔型二维数组)
- 如何生成SSH key