上篇我们讲解了如何使用 Kotlin 来写 XML parser ,我们也有提到 DOM parser 有个缺点就是有可能会消耗较多的记忆体,这点在 mobile 平台其实要特别注意,尤其是 Android 系统,Android 的装置很多,我们没办法保证手机的记忆体一定很大。在写 Android APP 的时候,希望能够尽可能地省记忆体。那之前介绍的 DOM parser 在 Android 上不见得是很好的做法,幸运的是 Android 原生有提供优化过的 XML parser ,我们可以拿这个来当成我们日後 annotation processor 的 parser generator 的基底。
这个 parser 其实并不存在 Java 的 standard library ,他是一个 Android 额外纳入的 library ,但他的运作原理其实跟 StAX 一样。
XmlPullParser
虽说比较快,也比较省记忆体,但还是有一个缺点:无法直接跨层存取 tag ,必须要一层一层读取。这个对我们在写 parser 的时候,或许会比较不方便,我们可以用暂存的变数先把一层层的参数存起来解决无法跨层存取的问题。
XmlPullParser
在拉 event 的时候是靠 next()
这个方法去达成的,有点像是我们在写 List 的 iterator ,回圈每次去问还有没有下个 element 可以用。在这个 parser 里面有预先定义好一些 event 可以让我们使用:
START_DOCUMENT
START_TAG
TEXT
END_TAG
END_DOCUMENT
下篇我们将会开始实作 XmlPullParser
,我们可以比较一下它写起来的感觉和 DOM parser 有什麽差别!
>>: D-20. 预设更改DBMS 、bundle指令 、Gemfile && Reverse String II && III
classList ClassList是一个物件,会返回一个 DOMTokenList,里面包含此元...
Elasticsearch 的优化技巧 系列文章索引 (1/4) - Indexing 索引效能优化...
问题回答 当我们更新资料和渲染画面时会频繁地新增和删除 DOM 元素,造成效能问题。因此,不论是 V...
Mac OS 开发系统 完成基本环境设置後 开始新专案 在终端机 Terminal cd 到指定要放...
前言 由於接下来要开始写到attention和Capsule的实作,主要是会研究一些github或是...